我试图通过管道读取浮点值,只要其中有数据即可。问题是在我的情况下read函数从不返回0,因此我的函数从不退出循环。
而且,我不能使用库函数。
为您提供上下文:我想创建运行以下功能的子进程。每个浮点值由父级通过管道发送,并由一个子进程读取,该子进程应处于睡眠状态,以便让另一个子进程读取另外一个值并进入睡眠状态。当一个进程唤醒时,他应该检查它是否可以从管道中获取值以再次进入睡眠状态,否则循环结束并且退出子进程。
void worker(int * pip){
close(pip[1]);
float buffer;
while(read(pip[0], &buffer, sizeof(float)) != 0){
sleep(buffer);
}
exit(1);
}
每个值都由父级以这种方式在循环中写入:
write(pip[1], &values[i], sizeof(float))
答案 0 :(得分:3)
您应在父级years
所有数据之后调用close(pip[1]);
。
以下write
可以工作:
code