UNIX/Linuxの部屋 関数:nanosleep


※空白区切りで AND 検索 (例:「ファイル 削除」)

関数 nanosleep 指定時間の間、動作を止める (ナノ秒単位)

nanosleep(2) は、ナノ秒単位で sleep を行うシステムコールである。FreeBSD・Linux いずれも、
  • システムコール: nanosleep(2)
  • ライブラリ関数: sleep(3), usleep(3)
であり、sleep(3) と usleep(3) は nanosleep(2) を呼び出すという関係性である。

下記は 1.5秒 sleep する擬似コード。

#include <time.h>
struct timespec req;
rec.tv_sec = 1;
rec.tv_nsec = 500000000; /* 500,000,000ナノ秒 = 500,000マイクロ秒 = 500ミリ秒 = 0.5秒 */
struct timespec rem;
int ret = nanosleep(&req,&rem);
if ( ret == -1 ) {
if ( errno == EINTR ) {
シグナルで中断してしまったので、rem に残り秒数が入っているのでリカバリ処理を行う
} else {
perror("nanosleep() failed");
}
}


頑張って書いたおすすめコンテンツ!
クラウドサービス徹底比較・徹底解説