#macos
#macos
Вопрос:
Есть ли порт libfaketime для OSX? http://www.code-wizards.com/projects/libfaketime /
Ответ №1:
Хорошо, итак, я портировал его.
Ответ №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. В этой версии POSIXclock_gettime
является частью опции таймеров; т. е. это необязательно, а не обязательно. В POSIX.1-2008 параметр Timers объединен с базовой спецификацией. Будущие версии сертификации UNIX, вероятно, потребуютclock_gettime
, но UNIX 03 этого не делает. 🙁3. Кроме того, я не уверен, что понимаю, что глупого в этом обходном пути, за исключением того, что это должно быть
#elif _XOPEN_UNIX > 0
или#elif _XOPEN_VERSION > 600
(посколькуgettimeofday
это расширение XSI).