USLEEP(3)

НАЗВАНИЕ
usleep - задерживает выполнение операции на определенное количество микросекунд

СИНТАКСИС
/* BSD version */
#include <unistd.h>

void usleep(unsigned long usec);

/* SUSv2 version */
#define _XOPEN_SOURCE 500
#include <unistd.h>

int usleep(useconds_t usec);

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

ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
Функция ничего не возвращает (BSD). Или возвращается 0 при номальном завершении работы и -1 при ошибках (SUSv2).

СООБЩЕНИЕ ОБ ОШИБКАХ

EINTR
    Прервано сигналом.

EINVAL
    usec больше, чем 1000000. (В тех системах, где это условие вызывает ошибку.)

СООТВЕТСТВИЕ СТАНДАРТАМ
Стандарт BSD 4.3. В версиях SUSv2 возвращается целое число, и это тот прототип, что используется в glibc 2.2.2. В SUSv2 указано, что возвращаться может только ошибка EINVAL.

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

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

Этот тип определен <sys/types.h> включенным с помощью <unistd.h> но glibc определяет его только когда _XOPEN_SOURCE имеет значение не меньше 500, или если определены одновременно и _XOPEN_SOURCE, и _XOPEN_SOURCE_EXTENDED.

Взаимодействие этой функции с сигналом SIGALRM и другими функциями таймера, такими как alarm(), sleep(), nanosleep(), setitimer(), timer_create(), timer_delete(), timer_getoverrun(), timer_gettime(), timer_settime(), ualarm() неопределено.

Эта функция устарела. Используйте вместо нее функции nanosleep(2) или setitimer(2).

СМ. ТАКЖЕ
alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), sleep(3)