没有 dup 的 execl 管道
Posted
技术标签:
【中文标题】没有 dup 的 execl 管道【英文标题】:execl pipe without dup 【发布时间】:2009-09-11 21:02:16 【问题描述】:我正在尝试使用 execl 从父级执行程序。我进行正常的管道设置和分叉。这是诀窍...我需要我的孩子(可以有任意数量的孩子)与父母交流。
程序“A”(父)创建管道分叉并执行到“B”(子)。在程序 B 的 main() 函数中,我需要能够读写管道。
在excel接管并执行我的子进程后,有什么方法可以访问我在子进程中的管道文件描述符?
谢谢你, ~埃里克
【问题讨论】:
【参考方案1】:
execl(3)
对文件描述符没有影响,只有一个例外
可以使用fcntl(2)
标记文件描述符close-on-exec,但通常execve(2)
的各种风格对打开的文件描述符没有影响,并且它们在子项中保持打开状态。
【讨论】:
谢谢。我发现将管道的“in”和“out”文件描述符作为参数传递给程序“B”就可以了。【参考方案2】:阅读 Beej 的 Unix 进程间通信指南(您可以在 http://beej.us/guide/ 找到它),尤其是第 4 节。
【讨论】:
以上是关于没有 dup 的 execl 管道的主要内容,如果未能解决你的问题,请参考以下文章