gpt4 book ai didi

c - 在子调用 exec() 后使用 pipe()

转载 作者:太空宇宙 更新时间:2023-11-03 23:23:29 25 4
gpt4 key购买 nike

我的最终目标是让父进程将文本行传递给子进程,然后子进程将文本打印到标准输出。 child 将在后台“永久”运行,而 parent 获取用户输入并将其传递给 child 。我更喜欢 child 在一个单独的程序中。通过 if 语句区分 child 和 paretn 就像软糖一样困惑。

我正在研究管道,但我不确定在子级调用 exec() 到另一个程序后,管道是否有可能在父级/子级之间进行通信。

这可能吗?如果是这样,你有什么例子可以指给我看吗?如果不是,在那种情况下我可以使用什么 IPC 方法?

最佳答案

标准场景是让程序作为一个 child 执行,不知道管道,只使用 stdin/stdout。您可以通过 dup2() 将管道的相应末端设置为 fd 01(或同时使用两个管道进行双向通信)来实现此目的,对应于STDIN_FILENOSTDOUT_FILENO。在此之后,执行您的子程序。

当然,还有其他选择,例如“命名管道”,如果您需要 stdin/stdout 用于 child 的不同目的。

如果您自己编写这两个部分,您可能需要考虑更简单的解决方案:

Differentiating between child and parent through if statements is messy as fudge.

无论如何你都必须这样做,至少是为了连接管道和调用 exec()。只需创建单独的代码文件并根据需要调用诸如 parent_main()child_main() 之类的东西(随便你怎么调用它们)。

关于c - 在子调用 exec() 后使用 pipe(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33129782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com