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

Posted

技术标签:

【中文标题】C - 在顶层和底层进程之间进行通信【英文标题】:C - Communicating between top and bottom level processes 【发布时间】:2016-02-29 23:05:35 【问题描述】:

给定一个 fork n 个进程的程序,我如何使用命名管道从底层(叶)进程向顶层进程发送消息。

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

【问题讨论】:

【参考方案1】:

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

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

继承的 fds 是对 vnode 的计数引用,因此这就是为什么您需要关闭所有进程中的所有写入端,而不是要从中写入的底部进程,以便最终关闭写入器中的写入端进程可以在阅读器中生成文件结尾。

【讨论】:

以上是关于C - 在顶层和底层进程之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章

Docker的底层原理实现(二十)

Java并发编程系列- JMM和底层实现原理

JMM和底层实现原理

AD编译问题

顶层const和底层const

Kotlin进程通信------Messenger