반응형

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
블로그 이미지

자연&사람

행복한 개발자 programmer since 1995.

,