NANOSLEEP(2) | Linux Programmer's Manual | NANOSLEEP(2) |
이름¶
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> 에 지정되고
struct timespec { time_t tv_sec; /* seconds */ long tv_nsec; /* nanoseconds */ };
의 형태를 갖는다.
나노초필드 값은 에서 999 999 999의 범위안에 들어야 한다.
sleep(3) 와 usleep(3) 를 비교한다면, nanosleep 는 모든 POSIX 표준인 시그널에 영향을 주지 않는 잇점이 있다. 그것은 높은 시간 분석을 제공하고, 더 쉽게 시그널에 의해 중단된 계속적인 대기상태를 허락한다.
에러¶
에러나 예외(exception)의 경우, nanosleep 시스템 호출은 0대신 -1을 반환하고 다음 값중 하나로 errno 를 설정한다:
버그¶
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).
관련 항목¶
역자¶
ASPLINUX<man@asp-linux.co.kr>, 2000년 7월 29
1996-04-10 | Linux 1.3.85 |