NANOSLEEP(2) |
FreeBSD System Calls Manual |
NANOSLEEP(2) |
名称
nanosleep —
ナノ秒単位で測定されるインターバルでプロセスの実行をサスペンド (中断) する
ライブラリ
Standard C Library (libc, -lc)
書式
#include < time.h>
int
nanosleep( const struct timespec *rqtp, struct timespec *rmtp);
解説
nanosleep() システムコールによって、呼び出しているスレッドは、
rqtp によって指定された時間のインターバル (interval) が経過するまで、スリープします。マスクされていないシグナルによって、割り込みしているシグナルの
SA_RESTART 値にかかわらず、通常より早くスリープを終了します。
戻り値
要求された時間が経過したので、
nanosleep() システムコールが返るなら、返される値は、0 になります。
nanosleep() システムコールがシグナルの配信のために返るなら、返される値は、-1 となり、グローバル変数 errno は、割り込みを示す値に設定されます。 rmtp が NULL でないなら、それを参照する timespec 構造体は、 (要求される時間から実際にスリープした時間を引いた) スリープしていない時間を含むように更新されます
エラー
nanosleep() システムコールは、次の場合に失敗します:
-
[
EFAULT]
-
rqtp または
rmtp のいずれかが、プロセスのアドレス空間の有効な部分でないメモリを指しています。
-
[
EINTR]
-
nanosleep() システムコールが、シグナルの配信によって割り込まれました。
-
[
EINVAL]
-
rqtp 引数が、0 未満か、または 10 億ナノ秒以上の値を指定しました。
-
[
ENOSYS]
-
nanosleep() システムコールが、この実装でサポートされていません。
規格
nanosleep() システムコールは、 IEEE Std 1003.1b-1993 (“POSIX.1b”) に適合しています。