读取结束后停止阻止写入fifo

时间:2014-04-13 18:10:20

标签: c linux debian fifo

在读取进程退出时,如何在写入调用块之前从写入进程中确定它?通常,当读取端关闭时,写入端的写入调用应该返回错误吗?

客户端

while(!timeout)
{
    read(fd, message, BUFFER_SIZE);
}

服务器

while(1)
{
    length = write(fd, message, strlen(message));
    if(length <= 0)
    {
        break;
    }
}

1 个答案:

答案 0 :(得分:1)

仔细阅读fifo(7)

  

当进程尝试写入未打开以进行读取的FIFO时          另一方面,该过程发送一个SIGPIPE信号。

您可以 - 并且可能应该 - 使用poll(2)来测试fifo或管道或套接字文件描述符的动态可读性或可写性(请参阅this answer关于使用{{1的简单event loop }})。另见write(2)&amp; Advanced Linux Programming