イベントを待機し、system()
関数ごとに外部システムコマンドを実行するプログラムをCで作成しました。
while( true ){
wait_for_event();
system("cmd");
}
私はこれに重大な問題を抱えています。これcmd
は重いコマンドであり、完了するまでに数秒かかります。私のアプリはこの時間枠内のいくつかのイベントを見逃しています。
そこで、非常に重い関数を別のプログラムに移動することにしましたsystem
。そこで、プログラムを次のように変更しました。
while( true ){
wait_for_event();
write_to_fifo("cmd");
}
そして別のプログラムを書きました:
while(true){
system(read_from_pipe());
}
しかし、プロデューサー(1番目のプログラム)がコンシューマー(2番目のプログラム)よりも速く書き込む場合、コンシューマーは一部のデータを見逃すため、役に立ちません。
この問題を処理する方法はありますか?