(mkfifo() を使用して) FIFO を作成しましたが、何らかのプロセスがそれにデータを数回書き込むまで待つ必要があります。私は次のコードを書きました: (悪いスタイルは無視してください。例を簡潔にするためです)
int count = 0, read = 0;
while(count < 2) {
read = read(fd, buf, BUFFER_SIZE);
if(read > 0) {
//do work...
count++;
}
}
忙しい待機を避けるために、次の行を追加しました。
int count = 0, read = 0;
while(count < 2) {
sleep(2);
read = read(fd, buf, BUFFER_SIZE);
if(read > 0) {
//do work...
count++;
}
}
(fd は FIFO の記述子です)
しかし、私はそれが本当に好きではありません。人工的に見えます。それを行うより良い方法はありますか?