Есть ли порт libfaketime для OSX?

#macos

#macos

Вопрос:

Есть ли порт libfaketime для OSX? http://www.code-wizards.com/projects/libfaketime /

Ответ №1:

Хорошо, итак, я портировал его.

http://github.com/dbrashear/libfaketime/

Ответ №2:

В freshmeat libfaketime перечисляет свои платформы как Linux и POSIX. Поскольку OSX указан как полностью совместимый с POSIX, он должен быть идеально использован как есть.

Редактировать

если clock_gettime это единственная проблемная функция и вы чувствуете себя неуверенно, вы могли бы попробовать этот небольшой взлом:

 #if _POSIX_TIMERS > 0
clock_gettime(CLOCK_REALTIME, amp;tp);
#else
struct timeval tv;
gettimeofday(amp;tv, NULL);
tp.tv_sec = tv.tv_sec;
tp.tv_nsec = tv.tv_usec*1000;
#endif
  

Комментарии:

1. К сожалению, OSX не реализует clock_gettime, который требуется libfaketime, поэтому он не компилируется. К сожалению, это известная проблема: discussions.apple.com/thread/2235198?threadID=2235198 Также для получения дополнительной информации: webcache.googleusercontent.com /…

2. К сожалению, это не ложная реклама. UNIX 03 не требует clock_gettime . Сертификация UNIX 03 требует соответствия POSIX.1-2001. В этой версии POSIX clock_gettime является частью опции таймеров; т. е. это необязательно, а не обязательно. В POSIX.1-2008 параметр Timers объединен с базовой спецификацией. Будущие версии сертификации UNIX, вероятно, потребуют clock_gettime , но UNIX 03 этого не делает. 🙁

3. Кроме того, я не уверен, что понимаю, что глупого в этом обходном пути, за исключением того, что это должно быть #elif _XOPEN_UNIX > 0 или #elif _XOPEN_VERSION > 600 (поскольку gettimeofday это расширение XSI).