Provided by: manpages-pl-dev_0.7-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/.

Linux 1.3.85                                       1996-04-10                                       NANOSLEEP(2)