USLEEP(3)

ИМЯ
usleep - задерживает выполнение на определенное количество микросекунд

ОБЗОР
#include <unistd.h>

int usleep(useconds_t usec);

Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

usleep():
    Начиная с glibc 2.12:
        _BSD_SOURCE ||
            (_XOPEN_SOURCE >= 500 ||
                _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED) &&
            !(_POSIX_C_SOURCE >= 200809L || _XOPEN_SOURCE >= 700)
    До glibc 2.12: _BSD_SOURCE || _XOPEN_SOURCE >= 500 || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED

ОПИСАНИЕ
Функция usleep() приостанавливает выполнение вызвавшей нити на (не менее) usec микросекунд. Остановка может продлиться слегка больше при большой загруженности системы, из-за, собственно, времени обработки этого вызова или из-за неточности хода системных часов.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При успешном выполнении usleep() возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

EINTR
    Прервано сигналом; см. signal(7).

EINVAL
    Значение usec больше 1000000 (в тех системах, где это считается ошибкой).

АТРИБУТЫ
Описание терминов данного раздела смотрите в attributes(7).
Интерфейс | Атрибут | Значение
usleep() | безвредность в нитях | безвредно (MT-Safe)

СООТВЕТСТВИЕ СТАНДАРТАМ
4.3BSD, POSIX.1-2001. В POSIX.1-2001 эта функция объявлена устаревшей; вместо неё используйте nanosleep(2). Из POSIX.1-2008 описание usleep() было удалено. В первоначальной реализации BSD и в glibc до версии 2.2.2 типом возвращаемого значение функции был void. В версии POSIX возвращается int, и этот прототип также используется в glibc начиная с версии 2.2.2. Возвращаемая ошибка EINVAL определена только в SUSv2 и POSIX.1-2001.

ЗАМЕЧАНИЯ
Тип useconds_t является беззнаковым целым типом, способным хранить целые числа в диапазоне [0,1000000]. Программы будут иметь более высокий уровень переносимости на другие ОС, если они никогда не будут явно упоминать этот тип. Используйте

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

Взаимодействие этой функции с сигналом SIGALRM и другими функциями таймера, такими как 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), не определено.

СМОТРИТЕ ТАКЖЕ
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), sleep(3), ualarm(3), time(7)