NAME
usleep - 마이크로초 단위 시간 동안 실행을 멈추기
SYNOPSIS
#include <unistd.h>
int usleep(useconds_t usec);
glibc 기능 확인 매크로 요건 (feature_test_macros(7) 참고):
usleep()
-
- 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
usleep()
함수는 (적어도) usec
마이크로초 동안 호출 스레드의 실행을 멈춘다. 어떤 시스템 활동이나 호출 처리에 소모된 시간에 의해, 또는 시스템 타이머 정밀도에 따라 잠드는 시간이 살짝 길어질 수도 있다.
RETURN VALUE
usleep()
함수는 성공 시 0을 반환한다. 오류 시 -1을 반환하며 오류를 나타내도록 errno
를 설정한다.
ERRORS
EINTR
- 시그널에 의해 중단됨. signal(7) 참고.
EINVAL
usec
이 1000000 이상이다. (그게 오류라고 보는 시스템에서.)
ATTRIBUTES
이 절에서 사용하는 용어들에 대한 설명은 attributes(7)를 보라.
인터페이스 | 속성 | 값 |
---|---|---|
usleep() |
스레드 안전성 | MT-Safe |
CONFORMING TO
4.3BSD, POSIX.1-2001. POSIX.1-2001에서 이 함수를 구식으로 선언했다. 대신 nanosleep(2)을 사용하라. POSIX.1-2008에서 usleep()
명세를 제거했다.
원래 BSD 구현에서, 그리고 glibc 버전 2.2.2 전에서는 이 함수의 반환 타입이 void
이다. POSIX 버전은 int
를 반환하는데 glibc 2.2.2부터 쓰는 원형이기도 하다.
SUSv2 및 POSIX.1-2001에서는 EINVAL
오류만 기록돼 있다.
NOTES
useconds_t
타입은 [0,1000000] 범위의 정수를 담을 수 있는 부호 없는 정수 타입이다. 프로그램에서 이 타입을 명시적으로 쓰지 않는 쪽이 이식성이 나을 것이다. 즉 다음과 같이 쓰면 된다.
#include <unistd.h>
...
unsigned int usecs;
...
usleep(usecs);
이 함수와 SIGALARM
시그널과의 상호작용, 그리고 alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), ualarm(3) 같은 여타 타이머 함수와의 상호작용은 명세돼 있지 않다.
SEE ALSO
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), sleep(3), ualarm(3), time(7)
2021-03-22