NANOSLEEP
Section: Linux Programmer's Manual
(2)
Updated: 1996-04-10
Index
Return to Main Contents
이름
nanosleep - 지정한 시간에 실행을 잠시 멈춘다.
사용법
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
설명
nanosleep
은 적어도
*req
에 지정된 시간만큼 프로그램 실행을 늦춘다. 시그널이 프로세스로 전달됐다면
그런 기능은 더 빨리 반환할 수 있다. 그 기능은 시그널이 프로세스에 전달되었다면
더 빨리 반환할 수 있다. -1이 반환되는 경우
EINTR
로 errno를 설정하고,
rem
이
NULL
이 아니라면
rem
이 가리키는 곳에 남은 시간을 기록한다.
그후
*rem
값은 다시
nanosleep
오출에 사용될 수 있다.
timespec
은 나노초의 정밀도를 가진 시간 간격을 지정하는데 사용된다.
그것은
<time.h>
에 지정되고
-
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
의 형태를 갖는다.
나노초필드 값은 에서 999 999 999의 범위안에 들어야 한다.
sleep(3)
와
usleep(3)
를 비교한다면,
nanosleep
는 모든 POSIX 표준인 시그널에 영향을 주지 않는 잇점이 있다. 그것은 높은
시간 분석을 제공하고, 더 쉽게 시그널에 의해 중단된 계속적인 대기상태를
허락한다.
에러
에러나 예외(exception)의 경우,
nanosleep
시스템 호출은 0대신 -1을 반환하고 다음 값중 하나로
errno
를 설정한다:
- EINTR
-
일시 중지는 프로세스에 전달된 비블록화 시그널에 의해 중단된다.
남은 대기 시간은 프로세스가 쉽게
nanosleep
를 다시 호출할 수 있도록 *rem에 기록되고, 일시정지는 계속된다.
- EINVAL
-
tv_nsec
필드안의 값은 0에서 999 999 999범위가 아니거나
tv_sec
가 음수이다.
버그
nanosleep
의 현재 구현은 1/HZ s (i.e, 10 ms on Linux/i386 and 1 ms on Linux/Alpha)
의 resolution을 가지고 있는 표준의 커널 타이머 메카니즘을 기본으로한다.
그러므로,
nanosleep
는 적어도 지정된 시간만큼 항상 일시 정지한다. 그러나 그것은 프로세스가 다시 실행가능
해지기까지 지정된것 보다 10ms이상 더 걸릴 수 있다. 같은 이유로, *rem에 전달된 시그
널의 반환값은 대개 1/HZ s정도 된다.
더욱더 정확한 일시정지가 필요한 응용프로그램처럼
nanosleep
도 또한 매우정확한 일시정지가 가능하다. 프로세스가
SCHED_FIFO
나
SCHED_RR
와 같은 실제시간정책에서 스케쥴링되었다면,
2ms이상의 일시정지는 마이크로초의 정밀도를 가진다.
호환
POSIX.1b (formerly POSIX.4).
관련 항목
sleep(3),
usleep(3),
sched_setscheduler(2),
timer_create(2)
역자
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29
Index
- 이름
-
- 사용법
-
- 설명
-
- 에러
-
- 버그
-
- 호환
-
- 관련 항목
-
- 역자
-
This document was created by
man2html,
using the manual pages.
Time: 08:06:59 GMT, March 25, 2004