nanosleep()

Приостановить поток до истечения времени или прихода сигнала

Прототип:

#include <time.h>
int nanosleep( const struct timespec *rqtp,
struct timespec *rmtp );

Аргументы:

rqtp
Указатель на структуру struct timespec, которая определяет временной интервал, на который стоит приостановить поток.
rmtp
NULL или указатель на структуру struct timespec, где функция может разместить оставшееся время приостановки (требуемое время минус время, которое прошло).

Библиотека:

libc

Описание:

Функция nanosleep() заставляет вызывающий поток приостановиться до тех пор, пока:


Note: Время приостановки может превышать запрашиваемое, поскольку значение аргумента будет округлено в большую сторону, чтобы быть кратным разрешению системного таймера, а также из-за диспетчеризации или другой активности системы.

Возвращаемое значение:

0
Запрашиваемое время прошло.
-1
Функция была прервана сигналом. Код ошибки записан в errno.

Коды ошибок:

EAGAIN
Все таймеры используются в данный момент. Следует подождать, пока процесс не освободит один из них.
EFAULT
Во время доступа к буферам произошла ошибка.
EINTR
Функция nanosleep() прервана сигналом.
EINVAL
Количество наносекунд, определяемое полем tv_nsec структуры struct timespec, на которую указывает rqtp, меньше нуля или больше или равно 1000 миллионам.

Классификация:

POSIX 1003.1 Timers

Безопасность использования
Точка остановки потока
Да
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Да

Тематические ссылки:

delay(), errno, clock_getres(), clock_gettime(), clock_settime(), sleep(), timer_create(), timer_delete(), timer_gettime(), timer_settime(), struct timespec, usleep()




Предыдущий раздел: Описание API системной библиотеки