名前


usleep - マイクロ秒単位で実行を延期する

書式


#define _XOPEN_SOURCE 500 /* または #define _BSD_SOURCE */ #include <unistd.h>

int usleep(useconds_t usec);

説明


usleep() 関数は (少なくとも) usecマイクロ秒の間、 呼び出し元プロセスの実行を延期する。 システムの動作状況や呼び出しによる時間の消費やシステムタイマの粒度によって、 停止時間は設定した値よりも少し延ばされるかもしれない。

返り値


成功すると 0、エラーの場合 -1 を返す。

エラー


EINTR シグナルによって中断された。
EINVAL usec が 1000000 以上だった。 (これをエラーとみなすシステムのみ)

準拠


4.3BSD, POSIX.1-2001. POSIX.1-2001 では、この関数は過去のものと宣言されている。 代わりに nanosleep(2) を使うこと。

もともとの BSD の実装や、バージョン 2.2.2 より前の glibc では、 この関数の返り値の型は void である。 POSIX 版は int を返し、このプロトタイプは glibc 2.2.2 以降で使用されている。

エラーとして EINVAL を返すというのは SUSv2 でのみ文書化されている。

注意


useconds_t 型は [0,1000000] の範囲の整数を扱うことができる 符号なし整数型である。 明示的にこの型を使わないことでプログラムの移植性がより高まる。 以下のように使うこと。

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

この関数と、SIGALRM シグナルあるいは alarm(2), sleep(3), nanosleep(2), setitimer(2), timer_create(3), timer_delete(3), timer_getoverrun(3), timer_gettime(3), timer_settime(3), ualarm(3) といったその他のタイマー関数を同時に使った場合の動作は未定義である。

関連項目


alarm(2), getitimer(2), nanosleep(2), select(2), setitimer(2), ualarm(3), sleep(3), feature_test_macros(7), time(7)

openSUSE Logo

コンテンツ