读取功能永远不会在C

时间:2018-11-26 10:14:52

标签: c pipe

我试图通过管道读取浮点值,只要其中有数据即可。问题是在我的情况下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))

1 个答案:

答案 0 :(得分:3)

您应在父级years所有数据之后调用close(pip[1]);

以下write可以工作:

code