Rechercher une page de manuel
nanosleep
Langue: pl
Version: 1996-04-10 (openSuse - 09/10/07)
Section: 2 (Appels système)
NAZWA
nanosleep - zatrzymanie wykonywania na okre¶lony czasSK£ADNIA
#include <time.h>int nanosleep(const struct timespec *req, struct timespec *rem);
OPIS
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)Contenus ©2006-2024 Benjamin Poulain
Design ©2006-2024 Maxime Vantorre