私は現在、生産者/消費者問題プログラムを実装しています。1 つの親プロセスと複数の子プロセスがあります。すべてが機能していk
ますが、プログラムが実行しているタスクの進行状況をミリ秒ごとにプログラムに出力させる必要があります。
signal()
最初は関数と関数を使用するだけでよいのではないかと考えalarm()
ましたが、いくつかの予備テストから、十分ではないように思われます。いくつかのログ ファイルを確認しましたonAlarm()
が、呼び出されていないようです。親も子も「忙しい」ということで、イベントを受け取れていないということでしょうか。または、忙しい場合でも、onAlarm() で呼び出しを受けることができるはずですか? これに対する唯一の回避策は、これを処理する単一の責任を持つ別のプロセスを作成することです。
これは私の「イベント」コードです:
void onAlarm() {
signal(SIGALRM, onAlarm);
alarm(0.01);
fprintf(outputFile, "ALAAAAAAAAAAAAAARMMMMMMMMMMM: %d\n", numberOfBytesRead);
}
int main() {
signal(SIGALRM, onAlarm);
alarm(0.01);
...
}