0
このコードは、ループ内で40秒ごとに関数を呼び出します。 time_tのが私のLinuxシステムに署名されているので、私はこの条件については疑問だ:whileループ内で40秒ごとに関数を呼び出す
if ((time_left <= 0 || time_left > interval))
だけ(time_left <= 0)
罰金をチェックしていますか?私はいくつかのウェブサイトを参照し、time_left > interval
のチェックを追加しました。このチェックは必要ですか?
int print_timed_op()
{
time_t time_now;
time_t time_left;
time_t time_next_interval;
int interval = 40, hit_count =10; //40 second interval, 10 times
time_next_interval = time(0) + interval;
//tight loop
while (1) {
sleep(1);
time_now = time(0);
time_left = time_next_interval - time_now;
/* here time_left > interval check required ? */
if ((time_left <= 0 || time_left > interval)) {
call_my_fuc();
time_next_interval = time(0) + interval;
time_left = interval;
hit_count--;
}
if(hit_count <= 0)
break;
}
return 0;
}
注:私は定期的に機能を呼び出すためのLinuxタイマーシステムコールまたは任意の他の方法を使用する必要はありません。
'time_left> interval'は' time_t'にのみ必要ですが、符号なし整数ですが、 'time_left <= 0'で十分です。 –
なぜあなたは' while(1){sleep(40 ); call_my_fuc();} '? (あなたが望むならあなたの 'hit_count'チェックを挿入することができます)。 – e0k