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 に適合しています。