2012-02-25 35 views

回答

8

“清除”管道的方法是从中读取,直到缓冲区为空。这对你没有帮助。我猜你真正的问题是父母可能会读取来自多个客户端的混合数据。有两个简单的解决方案来解决您的问题。

  1. 总是写不到PIPE_BUF字节长的消息,并以write单个调用做到这一点。这将确保写入管道是原子性的。

  2. 对每个子进程使用单独的管道。在服务器端,使用线程或使用非阻塞IO与selectpoll。等同地,您可以使用Unix域套接字,并让每个客户端连接到套接字(这实际上只是创建单独管道的一种不同方式)。

+0

嘿谢谢你的帮助。 – 2012-02-25 21:00:36

相关问题