usleep - задерживает выполнение на определенное количество микросекунд
usleep(3)
задерживает выполнение на определенное количество микросекунд
ОБЗОР
#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), не определено.