Provided by: manpages-pl-dev_20060617-3_all bug

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.