C 言語の nanosleep 関数の使い方は?
C言語のnanosleep()関数は、プログラムの実行を指定時間一時停止します。
nanosleep 関数は次のように定義されています。
int nanosleep(const struct timespec *req, struct timespec *rem);
パラメーターの説明:
- 秒とナノ秒単位で指定された時間を指定プログラムが休止する時間を指定する。timespec構造体であり、次の2つのメンバーを持つ。tv_sec: 休止する秒数を指定する。
tv_nsec: 休止するナノ秒数を指定する。 - rem: シグナルにより関数の実行が中断された場合、残りの時間を格納します。timespec 構造体です。
関数の戻り値:
- 関数が正常に完了した場合には 0 を返す。
- シグナルにより関数が中断された場合は-1を返し、残り時間をremに格納する。
nanosleep関数のサンプルコード:
#include <time.h>
#include <stdio.h>
int main() {
struct timespec req, rem;
req.tv_sec = 2; // 暂停2秒
req.tv_nsec = 0;
if (nanosleep(&req, &rem) == -1) {
printf("nanosleep failed\n");
return 1;
}
printf("Sleep complete\n");
return 0;
}
上記サンプルでは、プログラムは2秒間スリープします。nanosleep 関数がシグナルで割り込まれた場合、「nanosleep failed」と印刷され、割り込まれなかった場合は「Sleep complete」と印刷されます。