C - 在顶级和底级流程之间进行通信

时间:2016-02-29 23:05:36

标签: c fork ipc

鉴于一个程序分叉n个进程,如何使用命名管道从底层(叶子)进程向顶级进程发送消息。

我知道如何从命名管道写入和读取,但我不确定如何将命名管道写入底层进程并等待只从顶层进程读取它。

1 个答案:

答案 0 :(得分:0)

在顶级流程中创建一个管道对,让底层流程继承它(自动)。然后,底部进程可以写入写入端,顶部进程可以从读取端读取。

您创建了一个管道对,其中记录了pipe系统调用 http://linux.die.net/man/2/pipe。 该文档提供了子进程读取和父进程写入的示例。在你的情况下,你会切换它。

继承的fds是对vnode的计数引用,这就是为什么你需要关闭除了要写入的底层进程以外的所有进程中的所有写入结束,以便最终关闭写入中的写入结束进程可以在阅读器中生成文件结尾。