下图显示了在UNIX系统上使用 C语言的管道所需的IPC结构。
从前面提到的图表中,我编写了一个非常好的代码。
前言:我应该向“父母”提供输入。处理格式为" message - child_process_no" 即。当我输入" Hello - 3"。它应该仅由“儿童3”和“儿童3”阅读。来自' Pipe 2'而不是孩子2'。之后'孩子3'转发给孩子2'。
问题:在上述情况下,我应该向“孩子3”发送消息,实际上我最终收到的消息是&# 39;孩子2'。 我想知道是否有办法阻止孩子2'从阅读时的孩子3'意在阅读管道2'
澄清:管道2,管道3,管道4具有设置为非阻塞读取模式的读取端。这是故意的,因为在孩子2'和孩子3'我们必须阅读两个不同的管道。管道1使用默认的阻止读取。
我的方法: 1.)创建4个管道。 2.)根据要求将消息写入其中。 3.)叉3个孩子。 (关闭不必要的读/写结束并使用适当的读取方法) 4.)在父进程中关闭剩余的读/写结束。 5.)收获子进程。
P.S。 :我知道当你从管道读取一次时,它就从管道中消失了。我只是寻找一个可以证明我的查询合理的旗帜或信号。