我创建了一个 FIFO(使用 mkfifo()),我需要等到某个进程将数据多次写入其中。我写了以下代码:(忽略不好的样式,这是为了保持示例简洁)
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 的描述符)
但是我真的不喜欢它,它看起来很做作。有更好的方法吗?