0
私はFIFOを作成しましたが(mkfifo())、いくつかのプロセスが何回かデータを書き込むまで待つ必要があります。私は、次のコードを書いている:
Linuxで忙しく待たずにfifoを聞いています(C linux)
int count = 0, read = 0;
while(count < 2) {
sleep(2);
read = read(fd, buf, BUFFER_SIZE);
if(read > 0) {
//do work...
count++;
}
}
:(それは簡潔な例を維持することだ、悪いスタイルを無視する)
int count = 0, read = 0;
while(count < 2) {
read = read(fd, buf, BUFFER_SIZE);
if(read > 0) {
//do work...
count++;
}
}
ビジーウェイトを避けるための試みで、私は次の行を追加しました
(fdはFIFOのディスクリプタです)
しかし、私は本当に好きではない、それは人工的に見えます。それを行うより良い方法はありますか?
これは非常に一般的な状況です:1つ以上のファイル記述子が何かを 'read'するまで' select() 'を使ってブロック(待機)してください。 –
'read = read(...)'これがうまくいくとは思わないでください。 –