在子调用exec()之后使用管道() [英] Using pipe() after child calls exec()
本文介绍了在子调用exec()之后使用管道()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在查看管道,但我不确定在子级调用exec()
到不同的程序后,管道是否可能在父/子之间进行通信。
这可能吗?如果是这样的话,你有什么例子可以指给我看吗?如果不是,在这种情况下我可以使用什么IPC方法?
推荐答案
标准场景是让程序作为子程序执行,而不是管道,而只使用stdin
/stdout
。您可以通过dup2()
将管道的各个末端设置为fd0
或1
(或同时使用两个管道进行双向通信)来实现这一点,对应于STDIN_FILENO
和STDOUT_FILENO
。之后,执行您的子程序。
当然,如果您需要将stdin
/stdout
用于子项中的不同目的,还可以使用其他选项,例如"命名管道"。
不过,如果您自己编写这两部分,您可能需要考虑更简单的解决方案:
通过If语句区分子级和父级是一件乱七八糟的事情。
无论如何,您都必须这样做,至少在连接管道和调用exec()时是这样。只需创建单独的代码文件,并根据需要调用parent_main()
和child_main()
之类的名称(无论您喜欢怎么称呼它们)。
这篇关于在子调用exec()之后使用管道()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文