UNIX/Linuxの部屋 関数:nanosleep

TOP UNIX/Linuxの部屋 UNIX/Linuxコマンド一覧 用語集 新版 由来/読み方辞書 環境変数マニュアル Cシェル変数 システム設定ファイル システムコール・ライブラリ ネットワークプログラミングの基礎知識 クラウドサービス徹底比較・徹底解説




関数 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");
}
}