USLEEP(3)

NAZWA
usleep - zawiesza wykonanie na czas wyrażony w mikrosekundach

SKŁADNIA
#include <unistd.h>

int usleep(useconds_t usec);

Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)):

usleep():
    Od glibc 2.1.2:
        _BSD_SOURCE ||
            (_XOPEN_SOURCE >= 500 ||
                _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
            !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
    Przed glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 ||
        _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

OPIS
Funkcja usleep() zawiesza wykonanie wywołującego procesu na (co najmniej) usec mikrosekund. Zawieszenie może być delikatnie wydłużone przez jakąkolwiek aktywność systemu albo przez czas spędzony na przetwarzaniu wywołania, albo z powodu ziarnistości (częstotliwości odświeżania) liczników systemowych.

WARTOŚĆ ZWRACANA
Funkcja usleep() w przypadku powodzenia zwraca 0. W razie wystąpienia błędu zwracane jest -1 i ustawiana jest zmienna errno wskazując na błąd.

BŁĘDY

EINTR
    Przerwane przez sygnał, patrz signal(7).

EINVAL
    usec nie jest mniejsze niż 1000000. (Dla systemów, dla których jest to traktowane jako błąd).

ZGODNE Z
4.3BSD, POSIX.1-2001. POSIX.1-2001 uznają tę funkcję jako przestarzałą, sugerując używanie zamiast niej funkcji nanosleep(2). POSIX.1-2008 usuwa opis funkcji usleep().

W oryginalnej implementacji BSD oraz w wersjach wcześniejszych niż 2.2.2 biblioteki glibc typem zwracanym przez tę funkcję był void. Wersja POSIX zwraca int, taki typ jest też zwracany przez glibc od wersji 2.2.2.

SUSv2 i POSIX.1-2001 dokumentują tylko błąd EINVAL.

UWAGI
Typ useconds_t jest typem unsigned integer, zdolnym do przechowywania liczb naturalnych z zakresu [0,1000000]. Programy będą bardziej przenośne, gdy nigdy nie użyją wprost tego typu. Proszę użyć

#include <unistd.h>
...
    unsigned int usecs;
...
    usleep(usecs);

Interakcja tej funkcji z sygnałem SIGALRM oraz z innymi funkcjami licznikowymi, takimi jak alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(2), timer_delete(2), timer_getoverrun(2), timer_gettime(2), timer_settime(2), ualarm(3) jest nieokreślona.

ZOBACZ TAKŻE
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), sleep(3), ualarm(3), time(7)

O STRONIE
Angielska wersja tej strony pochodzi z wydania 3.52 projektu Linux man-pages. Opis projektu oraz informacje dotyczące zgłaszania błędów można znaleźć pod adresem http://www.kernel.org/doc/man-pages/.

TŁUMACZENIE
Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Robert Luberda <robert@debian.org> i Michał Kułach <michal.kulach@gmail.com>.

Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją 3.52 oryginału.