分叉和父子通信

Posted

技术标签:

【中文标题】分叉和父子通信【英文标题】:Forks and parent child communication 【发布时间】:2017-10-02 22:31:34 【问题描述】:

我是 Linux 系统命令和 IPC 相关主题的新手。

我有一个孩子计算给定数字的阶乘,然后将结果传回给父母。然后父级将打印接收到的输出。

我必须使用任何类型的PIPES来做到这一点。 至此,我对不同类型的 IPC 进行了少量研究。我考虑的两条路线是 File Mapping 和 Mail Slot。 但是考虑到这项任务的基础性,它们似乎都太复杂了。

有哪些简单的方法可以解决这个问题?

【问题讨论】:

解决这个问题的简单方法是使用管道。如果存在反对使用标准解决方案的人为约束,请移除该约束。如果您真的想在不使用管道的情况下执行此操作,请查看共享内存和/或套接字。 这是一个类,类要求声明不使用管道进行此分配。感谢您的建议,将调查! 此类问题的通常答案是“无论你在课堂上学到了什么”,但我们不知道你在课堂上学到了什么。如果由我决定并且我想找点乐子,我会使用信号量,每个可能的答案都有一个。 @MarkPlotnick 到目前为止,我只了解了每个变体的概念以及它为什么有用。我正在寻找的是易于实现的东西。我会研究信号量! 有内存映射、posix 共享内存、信号量、unix 套接字、IP 套接字,甚至可以读写同一个文件。阅读他们的文档并决定你想要什么。 【参考方案1】:

如果您的程序正在分叉子代,请在父代中创建一个共享位置,然后让子代在该空间中填写结果,因为在执行@987654321 时,父代和子代都可以访问所有内存@。

【讨论】:

以上是关于分叉和父子通信的主要内容,如果未能解决你的问题,请参考以下文章

突然运行 git remote update 返回致命:无法分叉

简谈packet tracer软件使用时数据包分叉状态

子进程似乎在一段时间循环中陷入睡眠

APFS 是不是真的支持命名分叉或仅支持资源分叉和扩展属性?

▶区块链:重放攻击是什么? 软分叉和硬分叉是什么?

《区块链100问》第66集:软分叉和硬分叉是什么?