【追記】
clock_gettime()
を使ったコードに変更しました。
clock_gettime()
はtimespec
型の値を返し、timespec
型は秒とナノ秒の情報が入った構造体です。
clock_gettime(CLOCK_MONOTONIC, ×pec型の変数)
とすると単調増加の値が得られます。
計測を始めた時点の値と現在の値の差が10秒以下の間処理を繰り返すプログラムを書けばHIG4TOさんのやりたいことが実現できるのではないでしょうか。
今回はナノ秒のオーダーは必要ないと思われますので、単純に秒のみを比較します。
処理を繰り返すときは定期的にsleep()
のような関数を呼び出さないとハングアップしてしまいますので注意です。
HIG4TOさんの環境が不明ですのでここではunistd.h
のusleep()
を使っていますが、Windowsなどの場合は代替となる関数(windows.h
のSleep()
とか)をググってみてください。
時間情報の取得 clock_gettime() - 時間の扱い - 碧色工房
c
1#include <time.h>
2#include <unistd.h>
3
4int main() {
5 struct timespec start, current;
6 time_t diff = 0;
7 clock_gettime(CLOCK_MONOTONIC, &start);
8
9 while (diff < 10) {
10 usleep(0.5 * 1000000); // 0.5秒待つ
11
12 // その他いろいろやる
13
14 clock_gettime(CLOCK_MONOTONIC, ¤t);
15 diff = current.tv_sec - start.tv_sec;
16 }
17
18 return 0;
19}