使用malloc在父子之间进行通信
Posted
技术标签:
【中文标题】使用malloc在父子之间进行通信【英文标题】:Using malloc to communicate between parent and child 【发布时间】:2016-06-13 22:58:57 【问题描述】:如果我从 malloc 请求 int 的内存大小,并从一个父进程创建“n”个子进程。 每个子进程是否可以更新(添加一个)该内存中的值,所以到最后父进程读取该值?
【问题讨论】:
没有。每个孩子都有自己的记忆副本,它可以修改。它与其他孩子的记忆副本完全分开,也与父母的记忆副本完全分开。孩子不能更改父母的记忆副本(也不能更改任何兄弟的副本)。要做你想做的事,你需要使用“共享内存”。您可能还需要处理对共享内存的同步访问 - 至少,父母需要知道每个孩子何时完成对其共享内存部分的写入,以便它可以安全地获取孩子所写的信息。 感谢您的帮助! 【参考方案1】:不,孩子和父母之间没有共同的记忆。 要在孩子和父母之间进行沟通,您可以使用:
Shared memory // 所有 POSIX 系统,Windows
Pipes , (Example of Named Pipes) , Pipe tutorial // 所有 POSIX 系统,Windows
FIFO files // 大多数操作系统
sockets // 大多数操作系统
有关其他方法的更多信息,请查看Inter-process communication
【讨论】:
以上是关于使用malloc在父子之间进行通信的主要内容,如果未能解决你的问题,请参考以下文章
12.组件化开发2-非父子组件之间通信-祖先和后代之间的通信