NAME

ualarm - 주어진 마이크로초 후로 시그널 예약하기

SYNOPSIS

#include <unistd.h>

useconds_t ualarm(useconds_t usecs, useconds_t interval);

glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):

ualarm():
glibc 2.12부터:
(_XOPEN_SOURCE >= 500) && ! (_POSIX_C_SOURCE >= 200809L)
|| /* glibc 2.19부터: */ _DEFAULT_SOURCE
|| /* glibc <= 2.19: */ _BSD_SOURCE
glibc 2.12 전:
_BSD_SOURCE || _XOPEN_SOURCE >= 500

DESCRIPTION

ualarm() 함수는 usecs 마이크로초 (이상) 후에 호출 프로세스에게 SIGALRM 시그널이 가게 한다. 어떤 시스템 활동이나 호출 처리에 소모된 시간에 의해, 또는 시스템 타이머 정밀도에 따라 지연 시간이 살짝 길어질 수도 있다.

잡거나 무시하지 않으면 SIGALRM 시그널은 프로세스를 종료시킨다.

interval 인자가 0이 아니면 첫 번째 시그널 후에도 interval 마이크로초마다 SIGALRM 시그널을 계속 보낸다.

RETURN VALUE

이 함수는 앞서 설정돼 있던 알람에 대해 남은 마이크로초 수를 반환한다. 미처리 알람이 없으면 0을 반환한다.

ERRORS

EINTR
시그널에 의해 중단됨. signal(7) 참고.
EINVAL
usecinterval이 1000000 미만이 아니다. (그게 오류라고 보는 시스템에서.)

ATTRIBUTES

이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.

인터페이스 속성
ualarm() 스레드 안전성 MT-Safe

CONFORMING TO

4.3BSD, POSIX.1-2001. POSIX.1-2001에서 이 함수를 구식으로 표시했다. POSIX.1-2008에서 ualarm() 명세를 제거했다. 4.3BSD, SUSv2, POSIX에서는 어떤 오류도 규정하고 있지 않다.

NOTES

POSIX.1-2001에서는 usecs 인자가 0일 때 어떻게 되는지 명세하고 있지 않다. 리눅스에서 (그리고 아마 대다수의 다른 시스템에서) 그 효과는 미처리 알람이 있으면 취소하는 것이다.

useconds_t 타입은 [0,1000000] 범위의 정수를 담을 수 있는 부호 없는 정수 타입이다. 원래 BSD 구현에서, 그리고 glibc 버전 2.1 전에서는 ualarm() 인자들에 unsigned int 타입을 썼다. 프로그램에서 useconds_t를 명시적으로 쓰지 않는 게 이식성 측면에서 나을 것이다.

이 함수와 alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), usleep(3) 등의 여타 타이머 함수들과의 상호작용은 명세돼 있지 않다.

이 함수는 구식이다. 대신 setitimer(2)나 POSIX 간격 타이머(timer_create(2) 등)를 써야 한다.

SEE ALSO

alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), usleep(3), time(7)


2021-03-22