在子调用exec()之后使用管道()

编程入门 行业动态 更新时间:2024-10-27 06:34:14
本文介绍了在子调用exec()之后使用管道()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧! 问题描述 我的最终目标是让父进程将文本行传递给子进程,然后子进程将文本打印到stdout。当父母获得用户输入并将其传递给孩子时,孩子将在后台"永久"运行。我更喜欢把孩子放在单独的节目里。通过if语句区分Child和paretn简直是胡说八道。

我正在查看管道,但我不确定在子级调用exec()到不同的程序后,管道是否可能在父/子之间进行通信。

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

推荐答案

标准场景是让程序作为子程序执行,而不是管道,而只使用stdin/stdout。您可以通过dup2()将管道的各个末端设置为fd0或1(或同时使用两个管道进行双向通信)来实现这一点,对应于STDIN_FILENO和STDOUT_FILENO。之后,执行您的子程序。

当然,如果您需要将stdin/stdout用于子项中的不同目的,还可以使用其他选项,例如"命名管道"。

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

通过If语句区分子级和父级是一件乱七八糟的事情。

无论如何,您都必须这样做,至少在连接管道和调用exec()时是这样。只需创建单独的代码文件,并根据需要调用parent_main()和child_main()之类的名称(无论您喜欢怎么称呼它们)。

更多推荐

在子调用exec()之后使用管道()

本文发布于:2023-07-07 16:11:57,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1065199.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:管道   exec

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!