はい-古いPOSIX標準が定義されているusleep()
ため、これはLinuxで使用できます。
int usleep(useconds_t usec);
説明
usleep()関数は、呼び出しスレッドの実行を(少なくとも)usecマイクロ秒一時停止します。スリープは、システムアクティビティ、呼び出しの処理に費やした時間、またはシステムタイマーの細分性によって、少し長くなる場合があります。
usleep()
マイクロ秒かかるため、ミリ秒単位でスリープするには、入力に1000を掛ける必要があります。
usleep()
その後廃止され、その後POSIXから削除されました。新しいコードの場合、nanosleep()
推奨されます:
#include <time.h>
int nanosleep(const struct timespec *req, struct timespec *rem);
説明
nanosleep()
少なくともで指定された時間*req
が経過するか、呼び出しスレッドのハンドラーの呼び出しをトリガーするかプロセスを終了するシグナルの配信が完了するまで、呼び出しスレッドの実行を中断します。
構造timespecは、ナノ秒の精度で時間間隔を指定するために使用されます。次のように定義されます。
struct timespec {
time_t tv_sec; /* seconds */
long tv_nsec; /* nanoseconds */
};
msleep()
を使用して実装された関数の例nanosleep()
は、シグナルによって中断された場合にスリープを継続します。
#include <time.h>
#include <errno.h>
/* msleep(): Sleep for the requested number of milliseconds. */
int msleep(long msec)
{
struct timespec ts;
int res;
if (msec < 0)
{
errno = EINVAL;
return -1;
}
ts.tv_sec = msec / 1000;
ts.tv_nsec = (msec % 1000) * 1000000;
do {
res = nanosleep(&ts, &ts);
} while (res && errno == EINTR);
return res;
}
sleep(/*seconds*/)
で<unistd.h>
私が使用している場合は動作しますが、printf("some things")
なしで\n
、そのではない動作します。