Вот что у меня есть:
#import <stdlib.h>
#import <stdio.h>
#import <time.h>
#import <sys/time.h>
#define TIME_LENGTH 9
int main ()
{
struct timeval now;
struct timespec wait;
time_t seconds;
char str[TIME_LENGTH];
wait.tv_sec = 0;
for (;;) {
gettimeofday(&now, NULL);
wait.tv_nsec = (1000000 - now.tv_usec) * 1000;
nanosleep(&wait, NULL);
seconds = now.tv_sec+1;
strftime(str, TIME_LENGTH, "%T", localtime(&seconds));
puts(str);
}
}
Работает с точностью "глазного яблока", которая должна быть достаточно хорошей. Похоже, что он обновляется синхронно со встроенными часами меню. Очевидно, в time.h
, clock_nanosleep
есть функция, которая может ждать до некоторого времени, а не ждать определенного периода времени, но это использование не поддерживается на Mac.