3
我有一个管道,我的所有子进程都使用管道,但是在子进程使用管道与父进程通信之前,我需要清除它以便父进程正确读取。在C中有一个简单的函数来做到这一点?是否有一种清理管道的简单方法C
我有一个管道,我的所有子进程都使用管道,但是在子进程使用管道与父进程通信之前,我需要清除它以便父进程正确读取。在C中有一个简单的函数来做到这一点?是否有一种清理管道的简单方法C
“清除”管道的方法是从中读取,直到缓冲区为空。这对你没有帮助。我猜你真正的问题是父母可能会读取来自多个客户端的混合数据。有两个简单的解决方案来解决您的问题。
总是写不到PIPE_BUF
字节长的消息,并以write
单个调用做到这一点。这将确保写入管道是原子性的。
对每个子进程使用单独的管道。在服务器端,使用线程或使用非阻塞IO与select
或poll
。等同地,您可以使用Unix域套接字,并让每个客户端连接到套接字(这实际上只是创建单独管道的一种不同方式)。
嘿谢谢你的帮助。 – 2012-02-25 21:00:36