NANOSLEEP(2)

名称
nanosleep - ナノ秒単位の間隔でプロセス実行を中断する

ライブラリ
libc

書式
<time.h> int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)

解説
nanosleep() によってプロセスは指定の時間だけ休眠状態になります。シグナルによる 割り込み時の SA_RESTART 値に無関係に、マスクされていないシグナルがあると プロセスの休眠状態は早めに終了します。

戻り値
要求された時間が経過したために nanosleep() 関数が戻った場合、返される値は 0 になります。

シグナルが配信されたために nanosleep() 関数から戻った場合に返される値は -1 になり、割り込みを示すために グローバル変数 errno が設定されます。 rmtp が NULL でない場合、それが参照する timespec 構造体は非休眠時間で更新されます (要求時間から、実際に休眠状態にあった時間を減算したものです)。

エラー
nanosleep() は、次の場合に失敗します:

[EFAULT]
    rqtp または rmtp のどちらかが、 プロセスに割り当てられたアドレス空間の範囲外のメモリを指しています。

[EINTR]
    nanosleep() はシグナルの配信によって割り込まれました。

[EINVAL]
    rqtp に 0 未満か、10 億ナノ秒以上の値を指定しました。

[ENOSYS]
    nanosleep() はこのシステムではサポートされていません。

関連項目
sigsuspend(2), sleep(3)

規格
nanosleep() 関数は p1003.1b-93 に準拠しています。