Provided by:
manpages-pl-dev_20060617-3_all 
NAZWA
nanosleep - zatrzymanie wykonywania na okrelony czas
SK/LADNIA
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
OPIS
nanosleep oponia wykonywanie programu przynajmniej o czas podany w
*req. Funkcja moe zakoczy si wczeniej, jeli procesowi dostarczono
sygnal. W tym wypadku zwraca -1, ustawia errno na warto EINTR i
zapisuje pozostaly czas do do struktury wskazywanejj przez rem, o ile
rem nie bylo rowne NULL. Warto *rem mona wykorzysta do ponownego
wywolania nanosleep i dokoczenia zadanej pauzy.
Do podawania interwalow czasowych z dokladnoci nanosekundow, uywana
jest struktura timespec, zdefiniowana w <time.h>, a majca posta
struct timespec
{
time_t tv_sec; /* sekundy */
long tv_nsec; /* nanosekundy */
};
Warto pola nanosekund musi by w zakresie od 0 do 999 999 999.
W porownaniu ze sleep(3) i usleep(3), nanosleep jest lepsze, gdy nie
wplywaj na nie sygnaly i jest zestandaryzowane przez POSIX. Ponadto
daje lepsz rozdzielczo czasow i pozwala na latwiejsz kontynuacj upienia
po przerwaniu przez sygnal.
B/LDY
W wypadku bldu, lub wyjtku, nanosleep zwraca zamiast 0 warto -1 i
ustawia errno na jedn z nastpujcych wartoci:
EINTR Pauza zostala przerwana nieblokowanym sygnalem, dostarczonym
procesowi. Pozostaly czas pauzy zostal zapisany do *rem, wic
proces moe latwo wywola ponownie nanosleep i dokoczy pauz.
EINVAL Warto z pola tv_nsec nie byla w zakresie 0 to 999 999 999 lub
tv_sec bylo ujemne.
USTERKI
Obecna implementacja nanosleep jest oparta o mechanizm zwyklego zegara
w jdrze, ktorego rozdzielczo wynosi 1/HZ s (np., dla Linuksa/i386 10 ms
i 1 ms dla Linuksa/Alpha). Tak wic nanosleep przerywa wykonanie zawsze
przynajmniej na zadany czas, cho moe wznowi dzialanie programu do 10ms
poniej ni podano. Z tej samej przyczyny, warto zwracana w *rem przy
pojawieniu si sygnalu, jest zaokrglana do wielokrotnoci 1/HZ s.
Jako, e niektore aplikacje wymagaj bardziej dokladnych pauz (np. aby
sterowa sprztem o krytycznych zalenociach czasowych), nanosleep moe te
dawa krotkie, bardzo dokladne pauzy. Jeli proces podlega szeregowaniu
zada wedlug polityki czasu rzeczywistego, takiej jak SCHED_FIFO czy
SCHED_RR, to wtedy pauzy do 2 ms bd wykonywane jako oczekiwania zajtoci
(busy waits) z precyzj mikrosekundow.
ZGODNE Z
POSIX.1b (poprzednio POSIX.4)
ZOBACZ TAKE
sleep(3), usleep(3), sched_setscheduler(2), timer_create(2)
INFORMACJE O T/LUMACZENIU
Powysze tlumaczenie pochodzi z nieistniejcego ju Projektu Tlumaczenia
Manuali i moe nie by aktualne. W razie zauwaenia ronic midzy powyszym
opisem a rzeczywistym zachowaniem opisywanego programu lub funkcji,
prosimy o zapoznanie si z oryginaln (angielsk) wersj strony podrcznika.