Provided by: manpages-pl-dev_0.5-1_all bug

NAZWA

       nanosleep - zatrzymanie wykonywania na określony czas

SKŁADNIA

       #include <time.h>

       int nanosleep(const struct timespec *req, struct timespec *rem);

OPIS

        Uwaga! To tłumaczenie może być nieaktualne!

       nanosleep  opóźnia  wykonywanie  programu przynajmniej o czas podany w *req.  Funkcja może
       zakończyć się wcześniej, jeśli procesowi dostarczono sygnał.  W  tym  wypadku  zwraca  -1,
       ustawia  errno  na  wartość  EINTR  i zapisuje pozostały czas do do struktury wskazywanejj
       przez rem, o ile rem nie było równe NULL.  Wartość *rem  można  wykorzystać  do  ponownego
       wywołania nanosleep i dokończenia zadanej pauzy.

       Do  podawania  interwałów  czasowych  z dokładnością nanosekundową, używana jest struktura
       timespec, zdefiniowana w <time.h>, a mająca 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 porównaniu ze sleep(3) i usleep(3), nanosleep jest lepsze,  gdyż  nie  wpływają  na  nie
       sygnały  i  jest zestandaryzowane przez POSIX. Ponadto daje lepszą rozdzielczość czasową i
       pozwala na łatwiejszą kontynuację uśpienia po przerwaniu przez sygnał.

BŁĘDY

       W wypadku błędu, lub wyjątku, nanosleep zwraca zamiast 0 wartość -1  i  ustawia  errno  na
       jedną z następujących wartości:

       EINTR  Pauza  została przerwana nieblokowanym sygnałem, dostarczonym procesowi.  Pozostały
              czas pauzy został zapisany  do  *rem,  więc  proces  może  łatwo  wywołać  ponownie
              nanosleep i dokończyć pauzę.

       EINVAL Wartość z pola tv_nsec nie była w zakresie 0 to 999 999 999 lub tv_sec było ujemne.

USTERKI

       Obecna  implementacja  nanosleep jest oparta o mechanizm zwykłego zegara w jądrze, którego
       rozdzielczość wynosi 1/HZ s (np., dla Linuksa/i386 10 ms i 1 ms dla  Linuksa/Alpha).   Tak
       więc  nanosleep  przerywa  wykonanie zawsze przynajmniej na zadany czas, choć może wznowić
       działanie programu do 10ms później niż podano. Z tej samej przyczyny, wartość  zwracana  w
       *rem przy pojawieniu się sygnału, jest zaokrąglana do wielokrotności 1/HZ s.

       Jako, że niektóre aplikacje wymagają bardziej dokładnych pauz (np. aby sterować sprzętem o
       krytycznych zależnościach czasowych), nanosleep może też dawać  krótkie,  bardzo  dokładne
       pauzy. Jeśli proces podlega szeregowaniu zadań według polityki czasu rzeczywistego, takiej
       jak SCHED_FIFO czy SCHED_RR, to wtedy pauzy  do  2 ms  będą  wykonywane  jako  oczekiwania
       zajętości (busy waits) z precyzją mikrosekundową.

ZGODNE Z

       POSIX.1b (poprzednio POSIX.4)

ZOBACZ TAKŻE

       sleep(3), usleep(3), sched_setscheduler(2), timer_create(2)

INFORMACJE O TŁUMACZENIU

       Powyższe  tłumaczenie  pochodzi  z nieistniejącego już Projektu Tłumaczenia Manuali i może
       nie być aktualne. W  razie  zauważenia  różnic  między  powyższym  opisem  a  rzeczywistym
       zachowaniem  opisywanego  programu  lub  funkcji,  prosimy  o  zapoznanie się z oryginalną
       (angielską) wersją strony podręcznika za pomocą polecenia:

              man --locale=C 2 nanosleep

       Prosimy o pomoc w aktualizacji stron man - więcej informacji  można  znaleźć  pod  adresem
       http://sourceforge.net/projects/manpages-pl/.