C言語でのusleep関数とnanosleep関数の説明、およびミリ秒単位のスリープの実装

C言語では、usleepとnanosleep関数は、プログラムのスリープ機能を実装するために使用されます。

  1. usleep関数は、指定された時間の間プログラムの実行を一時停止するために使用されます。マイクロ秒単位のパラメーターを受け取り、停止する時間の長さを表します。関数のプロトタイプは以下のようになります:
  2. #include
    int usleep(useconds_t microseconds);
    =>
    #include
    int usleep(useconds_t microseconds);
  3. useconds_tは、マイクロ秒を表すために使用される符号なし整数型です。関数の呼び出しは成功すると0を返し、失敗すると-1を返します。
  4. nanosleep関数は、指定された時間内にプログラムの実行を一時停止させるために使用されます。この関数は、ナノ秒単位で指定された時間の長さを受け取ります。関数のプロトタイプは次のようになります:
  5. #include
    int nanosleep(const struct timespec *req, struct timespec *rem);ヘッダを含め、指定された時刻構造体を使用してnanosleep関数を実行します。
  6. reqパラメータは、休止時間の長さを指定するための構造体ポインタです。その中で、timespec構造体は以下のように定義されています。
  7. 構造体のtimespecは、tv_secというメンバー変数で秒数を持ち、tv_nsecというメンバー変数でナノ秒数を持っています。
  8. remパラメータは、残りのスリープ時間を格納するための構造体ポインタです。関数呼び出しが成功した場合は0を返し、失敗した場合は-1を返します。

usleep関数を使ってミリ秒単位の休止を実装できます。usleep関数はマイクロ秒単位のパラメータを受け付けるため、ミリ秒をマイクロ秒に変換してusleep関数に渡すことができます。例えば、100ミリ秒の休止を行うには、以下のコードを使用できます:

#include <unistd.h>

void sleep_ms(unsigned int milliseconds) {
    usleep(milliseconds * 1000);
}

このコードでは、sleep_ms関数はミリ秒単位のパラメーターを受け取り、それをマイクロ秒単位の値に変換してusleep関数に渡します。これによりミリ秒単位のスリープを実現できます。

bannerAds