是否有可能在由同一个父母创建的两个子公司之间进行运河 /LINUX, POSIX/
我有几个子公司 "forked" 来自同一个父级,我正在尝试建立一个连接
在所有这些子进程之间,作为关联列表的结构。 孩子 1 送孩子data2,宝贝 2 孩子们 3.... 孩子们为孩子 1. 有没有正确的方法来做呢?
此外,如果我在进程之间创建和通信,因为我强制我的父级 "wait" 完成他们的工作以来
或者
它正在等待第一个完成的过程,但我需要等待他们。 另一个问题出现了。
谢...
pipe
在所有这些子进程之间,作为关联列表的结构。 孩子 1 送孩子data2,宝贝 2 孩子们 3.... 孩子们为孩子 1. 有没有正确的方法来做呢?
此外,如果我在进程之间创建和通信,因为我强制我的父级 "wait" 完成他们的工作以来
wait//
或者
waitpid//
它正在等待第一个完成的过程,但我需要等待他们。 另一个问题出现了。
谢...
没有找到相关结果
已邀请:
3 个回复
诸葛浮云
赞同来自:
编程有几个优秀的输入文本。 Unix, 在哪个简单 shell 通过书实施。 和其中一个任务shell重定向。 其中一个书籍 - " 41 " Michael K. Johnson和Erica W. Trois。
主页书籍:
http://ladweb.net/
/
建立一个重定向链 N 您需要的流程 N-1 渠道。 对于每个重定向,您可以使用系统调用创建频道。
pipe/int fds[2]/
. 后
ing, 但之前
ing 使用
-"connect" 管道的末端到标准入口 /0/ 或每个过程的标准输出。 这是一个过于简化的代码,而无需检查错误:
请注意,选择频道阵列索引以这样的方式选择它们反映标准输入描述符/输出文件如果用于重定向 stdio. 这种选择不是任意的。
当然,您可以将通道连接到任何文件描述符。 /例如,有一些应用程序期望他们的父母将打开,例如, fd 3 和 4, 连接到管道/, 而且大多数贝壳也直接支持它 /例如, 1>&3 重定向 stdout 在 fd 3/. 但是数组指数
pipe/int fds[2]/
, 当然,平等 0 和 1. 我只是告诉它,因为我有几个学生 cargo-cult-programming, 谁不安全地拿走了目标 fds 也适用于massiva. pipe syscall.
等待完成所有子流程,使用
– 我觉得它是 -1, 这意味着我的意见,这意味着:等待所有子公司的完成。 另一种选择是挑战
在一个循环中会返回 pid 新完成的子元素。 如果再次调用它,并且子仍然有效,它将再次被阻止。 如果孩子没有离开,他会回来 -1; 我更喜欢决定
.
莫问
赞同来自:
离开 FDs 管道在不使用它们的儿童开放 - 这是 FAIL, 因为它可以让别人等待管道的尽头。 所有作家必须在读者收到之前关闭 EOF.
董宝中
赞同来自:
至于等待,只需等到他返回 -1.