Если вы не извлекаете архивы и не нуждаетесь в различиях, попробуйте опцию diff -q :
diff -q 1.tar 2.tar
Это тихий результат будет "1.tar 2.tar отличаются" или ничем, если нет различий.
Я придумал следующее:
char fmt[64], buf[64];
struct timeval tv;
struct tm *tm;
gettimeofday(&tv, NULL);
if((tm = localtime(&tv.tv_sec)) != NULL)
{
strftime(fmt, sizeof fmt, "%Y-%m-%d %H:%M:%S.%%06u %z", tm);
snprintf(buf, sizeof buf, fmt, tv.tv_usec);
printf("'%s'\n", buf);
}
Исправления возникших у вас проблем:
gettimeofday ( )
и struct timeval
, которая имеет член микросекунды для более высокой точности. Я попытался заново создать смещение часового пояса вручную с помощью второго аргумента struct timezone *
в gettimeofday ()
, но на моей машине это возвращает смещение 0, что неверно. На странице руководства для gettimefday ()
довольно много говорится об обработке часовых поясов в Linux (ОС, на которой я тестировал).
"% Y-% m-% d% T% z"
, но похоже % z
является расширением GNU.
% z (нижний регистр z).
Однако это не отображается в спецификации Posix . Google взял меня в круг , здесь .