Если вы не хотите выполнять команду оболочки, вы можете (как вы упомянули) использовать settimeofday, я бы начал с чтения страницы MAN или поиска некоторых примеров
вот пример:
#include <sys/time.h>
#include <stdio.h>
#include <errno.h>
int main(int argc, char *argv[])
{
struct timeval now;
int rc;
now.tv_sec=866208142;
now.tv_usec=290944;
rc=settimeofday(&now, NULL);
if(rc==0) {
printf("settimeofday() successful.\n");
}
else {
printf("settimeofday() failed, "
"errno = %d\n",errno);
return -1;
}
return 0;
}
Бесстыдно вырванный. Из документации IBM , структура struct timeval
содержит количество секунд (как long
) плюс количество микросекунд (как long
) с 1 января 1970 года, 00 : 00: 00 UTC (время эпохи Unix). Таким образом, вам нужно будет рассчитать эти числа, чтобы установить время. Вы можете использовать эти вспомогательные функции , чтобы лучше справляться со структурой timeval.