반응형
settimeofday(2)
#include <sys/time.h>
int settimeofday(struct timeval *tv, struct timezone *tz);
settimeofday(2)함수는 1970-01-01 00:00:00 +0000 (UTC) 이후의 현재까지의 경과된 초와 micro초(백만분의 1초) 값으로 시스템 시간을 변경합니다. tz는 사용하지 않으므로 무시됩니다. 이 함수는 시스템의 시간을 변경하는 함수이므로 root 권한의 user만이 실행이 가능합니다.
파라미터
tv
- 1970-01-01 00:00:00 +0000 (UTC) 이후 경과된 초(seconds)와 micro초를 설정할 buffer
- struct timeval는 아래와 같습니다.
struct timeval {
time_t tv_sec; /* seconds */
suseconds_t tv_usec; /* microseconds */
};
tz
- struct timezone는 아래와 같습니다.
struct timezone {
int tz_minuteswest; /* minutes west of Greenwich */
int tz_dsttime; /* type of DST correction */
};
LINUX에서 tz_dsttime은 항상 0이어야 합니다.
LINUX에서는 tz가 NULL이 아니거나, tv가 NULL이고 tz_minuteswest값이 0이 아닌 인자로
OS부팅후 처음으로 settimeofday(2)함수를 호출하면
CMOS 시간은 UTC(Coordinated Universal Time: 세계표준시) 시간이 아닌 localtime의 의미를 가집니다.
따라서 timezone을 설정하는 것은 바람직한 방법이 아니며,
localtime(3)과 같은 함수를 이용하여 변환하여 사용하는 것이 좋습니다.
RETURN
0
- 정상적으로 처리되었습니다.
-1
- 오류가 발생하였으며, 상세한 오류는 errno에 저장됩니다.
EFAULT : tv 또는 tz의 메모리 영역이 유효하지 않은 영역입니다.
EINVAL : tz가 유효하지 않습니다.
EPERM : superuser 권한이 필요합니다.
반응형
'C언어 header > sys | time.h' 카테고리의 다른 글
gettimeofday(2) - micro초단위의 시간 얻기 (0) | 2019.09.29 |
---|