分叉和父子通信
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 返回致命:无法分叉