我有一个所有子进程都使用的管道,但在子进程使用该管道与父进程通信之前,我需要清除它,以便父进程正确读取它。 C 中有一个简单的函数可以做到这一点吗?
“清除”管道的方法是从管道中读取数据,直到缓冲区为空。这对你没有帮助。我猜测您真正的问题是父级可能会读取来自多个客户端的混合数据。有两种简单的解决方案可以解决您的问题。
始终写入少于PIPE_BUF
字节长,并在一次调用中执行此操作write
。这将确保对管道的写入是原子的。
为每个子进程使用单独的管道。在服务器端,要么使用线程,要么使用非阻塞 IOselect
or poll
。同样,您可以使用 Unix 域套接字,并让每个客户端连接到该套接字(这实际上只是创建单独管道的不同方式)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)