在读取进程退出时,如何在写入调用块之前从写入进程中确定它?通常,当读取端关闭时,写入端的写入调用应该返回错误吗?
客户端
while(!timeout)
{
read(fd, message, BUFFER_SIZE);
}
服务器
while(1)
{
length = write(fd, message, strlen(message));
if(length <= 0)
{
break;
}
}
答案 0 :(得分:1)
仔细阅读fifo(7):
当进程尝试写入未打开以进行读取的FIFO时 另一方面,该过程发送一个SIGPIPE信号。
您可以 - 并且可能应该 - 使用poll(2)来测试fifo或管道或套接字文件描述符的动态可读性或可写性(请参阅this answer关于使用{{1的简单event loop }})。另见write(2)&amp; Advanced Linux Programming