CLOCK_GETTIME(2)

명칭
clock_gettime, clock_settime, clock_getres - 일자와 시각의 취득/설정/정밀도의 취득을 한다

프로그램 라이브러리
libc

서식
<sys/time.h> int clock_gettime(clockid_t clock_id, struct timespec *tp) int clock_settime(clockid_t clock_id, const struct timespec *tp) int clock_getres(clockid_t clock_id, struct timespec *tp)

해설
clock_gettime() (와)과 clock_settime() 하 clock_id 그리고 지정하는 클락의 값을 취득, 설정합니다.

clock_id 에는, 다음의 3 개의 값 중 1 개를 지정합니다. CLOCK_REALTIME 는 보통 시계와 같이 진행되는 시간, CLOCK_VIRTUAL 는 호출해 프로세스를 위해서(때문에) CPU 가 유저 모드로 실행되고 있을 때만 진행되는 시간, CLOCK_PROF 는, CPU 가 유저 모드 또는 커널 모드로 실행되고 있다 풀러 진행되는 시간입니다.

tp 에 의해 가리켜지는 구조체는 <sys/time.h> 안에서 다음과 같이 정의되고 있습니다.

    struct timespec {
    	time_t	tv_sec;		/* 초 */
    	long	tv_nsec;	/* 나노초 */
    };

시각을 설정할 수 있는 것은 슈퍼 유저 뿐입니다. 시스템의 안전성 레벨 (securelevel)이 1 보다 큰 경우 (init(8) (을)를 참조), 시간은 앞당기는 것만이 할 수 있습니다. 이 제한은, 악의가 있는 슈퍼 유저가 파일에 임의의 타임 스탬프를 설정하는 것을 방지하기 위한의 것입니다. 그러나, 시스템이 안전한 모드때라도, adjtime(2) 시스템 콜을 사용하면 시스템 시간을 늦추는 것이 가능하게 됩니다.

클락의 정밀도 (섬세함)는, clock_getres() 호출에 의해 돌려주어집니다. 이 값은, (비 NULL 포인터) *tp 안에 격납됩니다.

반환값

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

[EINVAL]
    clock_id 하지만 유효한 값이 아니었습니다.

[EFAULT]
    *tp 인수 주소가 무효인 메모리를 참조하고 있습니다.

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

관련 항목
date(1), adjtime(2), ctime(3), timed(8) etc. clock_gettime() 등의 함수는 p1003.1b-93 에 준거하고 있습니다.