日本-日本語 |
|
|
|
OpenVMS マニュアル |
|
HP OpenVMS
|
目次 | 索引 |
nanosleep (Integrity, Alpha) |
高精度のスリープです (リアルタイム)。指定された時間だけ,プロセス (プログラムがスレッド化されている場合はスレッド) の実行を中断します。
#include <time.h>int nanosleep (const struct timespec *rqtp, struct timespec *rmtp);
rqtp
呼び出し元のプロセスまたはスレッドを中断する時間を指定する timespec構造体へのポインタ。rmtp
以前に要求されていた時間の残り時間 (時間が完全に経過した場合は,ゼロ) を受け取る timespecデータ構造体へのポインタ。
nanosleep関数は,次のいずれかの条件を満たすまで,プロセスまたはスレッドの実行を中断します。
- rqtp 引数で指定された時間が経過した。
- 呼び出し元プロセスにシグナルが渡され,その動作がシグナル・キャッチ関数の起動,またはプロセスの終了である。
引数の値がスリープの精度の整数倍に切り上げられたり,システムにより他の動作がスケジューリングされることがあるため,中断時間は,要求された時間よりも長くなることがあります。シグナルによって割り込まれた場合を除き,中断時間は, rqtp 引数で指定された時間より短くなることはありません (システム・クロック CLOCK_REALTIME で計測されます)。
nanosleep関数を使用しても,シグナルの動作やブロック条件には影響しません。
要求された時間が経過した場合,呼び出しが成功し, nanosleep関数はゼロを返します。
失敗すると, nanosleep関数は - 1 を返し,失敗を示す値を errnoに設定します。この関数は,シグナルに割り込まれるか,指定された rqtp 引数が0 より小さいか 10 億以上の場合に失敗します。
rmtp 引数が NULL でない場合,この引数が指す timespec構造体は,時間間隔の残り時間 (要求された時間から実際にスリープした時間を引いたもの) を含むようにアップデートされます。
rmtp 引数が NULL の場合,残り時間は返されません。
clock_getres, clock_gettime, clock_settime,および sleepも参照してください。
0 成功を示します。要求された時間が経過しました。 -1 失敗を示します。関数呼び出しが成功しなかったか,シグナルに割り込まれました。次の値のいずれかが, errno に設定されます。
- EINTR -- nanosleep 関数が,シグナルに割り込まれました。
- EINVAL -- rqtp 引数が, 0 より小さい,または 10 億以上のナノ秒値を指定していました。
目次 | 索引 |
|