GETTIMEOFDAY(2)

명칭
gettimeofday, settimeofday - 일자와 시각의 취득 / 설정

프로그램 라이브러리
libc

서식
<sys/time.h> int gettimeofday(struct timeval *tp, struct timezone *tzp) int settimeofday(const struct timeval *tp, const struct timezone *tzp)

해설
주기: timezone 는 이미 사용되지 않습니다. 이 정보는 커널의 외측에 보관 유지됩니다.

시스템이 보관 유지하고 있는 현재의 그리니치시각과 현재의 시간대는 gettimeofday() 호출로부터 얻을 수 있어 settimeofday() 호출로 설정됩니다. 시각은 1970 년 1 월 1 일의 심야 (0 시) (으)로부터의 초수와 마이크로 세컨드수로 표현됩니다. 시스템 클록의 분해가능은 하드웨어로 정해져, 시각은 계속적 또는 “틱” 단위로 갱신됩니다. tp 또는 tzp 하지만 NULL 의 경우, 대응할 때 각정보는 돌려주어지고 두, 또 설정되지 않습니다.

tp (와)과 tzp (이)가 가리키는 구조체는 <sys/time.h> 안에 다음과 같이 정의되고 있습니다.

    struct timeval {
    	long	tv_sec;		/* 1970년 1월 1일부터의 초수 */
    	long	tv_usec;	/* 및 마이크로 세컨드수 */
    };
    struct timezone {
    	int	tz_minuteswest; /* 그리니지로부터 서방향에의 편차 */
    	int	tz_dsttime;	/* 서머타임 보정의 타입 */
    };

timezone 구조체는, 로컬 시간대 (그리니지로부터 서향으로 분 단위로 측정)와 플래그를 포함합니다. 플래그가 0 이 아닌 경우는, 일년의 적절한 시기에 서머타임이 그 지역에 적용되는 것을 나타냅니다.

슈퍼 유저만이 시각 또는 시간대를 설정할 수 있습니다. 시스템이 안전 모드 (init(8) (을)를 참조)로 실행되는 경우는, 시각은 진행할 수 밖에 할 수 없습니다. 이 제한이 부과되는 것은, 악의가 있는 슈퍼 유저가 파일에 임의의 타임 스탬프를 설정하는 것을 방지하기 (위해)때문입니다. 시스템 시각은, 시스템이 안전 모드에 있어도 adjtime(2) 시스템 콜을 사용해 후방에 조정할 수 있습니다.

반환값

에러
다음의 에러 코드가 errno (으)로 설정됩니다.

[EFAULT]
    인수 주소가 무효인 메모리를 참조했습니다.

[EPERM]
    슈퍼 유저 이외의 유저가 시각을 설정하려고 했습니다.

관련 항목
date(1), adjtime(2), ctime(3), clocks(7), timed(8)

역사
gettimeofday() 함수는 4.2BSD 그리고 처음 등장했습니다.