GETITIMER(2)

명칭
getitimer, setitimer - 인터벌 타이머의 값을 취득 / 설정

프로그램 라이브러리
libc

서식
<sys/time.h> #define ITIMER_REAL 0 #define ITIMER_VIRTUAL 1 #define ITIMER_PROF 2 int getitimer(int which, struct itimerval *value) int setitimer(int which, const struct itimerval *value, struct itimerval *ovalue)

해설
시스템은, 각 프로세스에 <sys/time.h> 그리고 정의된 3 개의 인터벌 타이머를 제공하고 있습니다. getitimer() 시스템 콜은 which 그리고 지정된 타이머의 현재의 값을 value 구조체에 돌려줍니다. setitimer() 시스템 콜은 타이머를 지정의 value (으)로 설정합니다 (ovalue 하지만 nil 가 아닌 경우, 타이머의 이전의 값이 돌려주어집니다).

타이머의 값은 itimerval 구조체에 의해 정의됩니다.

    struct itimerval {
    	struct	timeval it_interval;	/* 타이마인타발 */
    	struct	timeval it_value;	/* 현재의 값 */
    };

it_value 하지만 0 이 아닌 경우, 그것은 다음에 타이머가 마감 시간이 될 때까지의 시간을 나타냅니다. it_interval 하지만 0 이 아닌 경우, 그것은 타이머가 마감 시간이 될 때 it_value (을)를 재설정하는데 사용되는 값을 지정합니다. it_value (을)를 0 으로 설정하면(자), 타이머는 it_interval 의 값에 관계없이 무효가 됩니다. it_interval (을)를 0 으로 설정하면(자), 다음의 마감 시간의 다음에 타이머는 무효가 됩니다 (it_value 하지만 0 이 아니면 상정합니다).

시스템 클록의 정밀도 (통상은 10 밀리 세컨드입니다)보다 작은 시간의 값은 이 정밀도에 끝맺을 수 있습니다.

ITIMER_REAL 타이머는 리얼타임에 감소해 갈 것입니다. 이 타이머가 마감 시간이 되면(자) SIGALRM 시그널이 전달됩니다.

ITIMER_VIRTUAL 타이머는 프로세스 가상 시간에 감소합니다. 이 타이머가 줄어드는 것은 프로세스가 실행중의 때 뿐입니다. 마감 시간이 될 때 SIGVTALRM 시그널이 전달됩니다.

ITIMER_PROF 타이머는, 프로세스 가상 시간내 및 시스템이 프로세스를 위해서(때문에) 처리를 실시하고 있을 때의 양쪽 모두로 감소합니다. 이것은, 인터프리터가 프로그램의 실행을 통계적으로 프로파일 할 경우에 사용하도록(듯이) 설계되고 있습니다. ITIMER_PROF 타이머가 마감 시간이 될 때마다 SIGPROF 시그널이 전달됩니다. 이 시그널은 진행중의 시스템 콜에 끼어들지도 모르기 때문에, 이 타이머를 사용하고 있는 프로그램은 끼어들어진 시스템 콜을 재실행할 준비를 해 두지 않으면 안됩니다.

setitimer() 그리고 it_interval (와)과 it_value 에 허용 되는 최대초수는 100000000 입니다.

주
시간의 값을 조작하는 3 개의 매크로는 <sys/time.h> 그리고 정의되고 있습니다. timerclear (은)는 시간의 값을 0 으로 설정해, timerisset (은)는 시간치가 0 이 아닌지 어떤지 검사해, timercmp (은)는 2 개의 시간의 값을 비교합니다.

반환값

에러
getitimer() (와)과 setitimer() (은)는 다음의 경우에 실패합니다.

[EFAULT]
    value 파라미터가 무효인 주소를 지정했습니다.

[EINVAL]
    value 파라미터가, 너무 커 처리할 수 없는 시간을 지정했습니다.

관련 항목
gettimeofday(2), select(2), sigvec(2), clocks(7)

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