gnu C での settimer または alarm 関数の使用法を、いくつかのプログラム例で説明できる人はいますか?
一部のデータを継続的に処理するプログラムがあり、t 秒ごとにオフになるタイマー/アラームを設定する必要があります。これに応じて、処理されたデータをファイルに保存する必要があります。このファイル書き込みは非同期である必要があります <つまり、データ処理とファイル書き込みは互いに待機してはなりません>。GNU C ライブラリのページを調べましたが、あまり理解できませんでした..
[編集]
私はこのプログラムを手に入れました:
#include <stdio.h>
#include <signal.h>
#include <sys/time.h>
#define INTERVAL 1
int howmany = 0;
void alarm_wakeup (int i)
{
struct itimerval tout_val;
signal(SIGALRM,alarm_wakeup);
howmany += INTERVAL;
printf("\n%d sec up partner, Wakeup!!!\n",howmany);
tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &tout_val,0);
}
void exit_func (int i)
{
signal(SIGINT,exit_func);
printf("\nBye Bye!!!\n");
exit(0);
}
int main ()
{
struct itimerval tout_val;
tout_val.it_interval.tv_sec = 0;
tout_val.it_interval.tv_usec = 0;
tout_val.it_value.tv_sec = INTERVAL; /* 10 seconds timer */
tout_val.it_value.tv_usec = 0;
setitimer(ITIMER_REAL, &tout_val,0);
signal(SIGALRM,alarm_wakeup); /* set the Alarm signal capture */
signal(SIGINT,exit_func);
while (1)
{
//printf("!");
}
return 0;
}
しかし、タイマーがオンになっている間は何もできないようです..自分のニーズに合わせて何を変更すればよいですか? 提案してください.. [/編集]