(sysadmin이 시스템 시간을 변경하거나 시간대가 겨울과 서머 타임이 다른 경우 여기에 모든 답변이 부족합니다. 따라서 ...)
Linux 사용시 : clock_gettime(CLOCK_MONOTONIC_RAW, &time_variable);
시스템 관리자가 시간을 변경하거나 겨울철이 여름철과 다른 국가에 거주하는 경우 영향을받지 않습니다.
#include <stdio.h>
#include <time.h>
#include <unistd.h> /* for sleep() */
int main() {
struct timespec begin, end;
clock_gettime(CLOCK_MONOTONIC_RAW, &begin);
sleep(1); // waste some time
clock_gettime(CLOCK_MONOTONIC_RAW, &end);
printf ("Total time = %f seconds\n",
(end.tv_nsec - begin.tv_nsec) / 1000000000.0 +
(end.tv_sec - begin.tv_sec));
}
man clock_gettime
상태 :
CLOCK_MONOTONIC
Clock that cannot be set and represents monotonic time since some unspecified starting point. This clock is not affected by discontinuous jumps in the system time
(e.g., if the system administrator manually changes the clock), but is affected by the incremental adjustments performed by adjtime(3) and NTP.