gpt4 book ai didi

c - 运行多个 fork 进程并不断读取它们的标准,同时打印到它们的标准

转载 作者:行者123 更新时间:2023-11-30 20:33:03 25 4
gpt4 key购买 nike

我希望运行 X 个能够迭代的进程,以便运行有主控和“从属”的程序,这些主控和“从属”接受主控命令并返回字符串。

我正在用 C 语言编写。我想知道如何在进程之间设置管道和 fork ,以从标准输入和输出读取。我目前可以让它们一次工作一个,直到被杀死,但我想简单地读取一行,然后进入下一个进程。有什么帮助吗?

最佳答案

通常,此类编程的常见策略是设置事件循环。您将设置管道并将它们连接到程序的标准输入和标准输出。您没有指定您使用的语言。在 C 中,您将创建两个管道,一个用于读取,一个用于写入。然后你就会 fork 。 fork 后,在子进程中,关闭 stdin 和 stdout,并使用 dup2 系统调用将管道文件描述符的一端复制到子进程。

在父进程中,您将每个进程连接到一个事件循环,这样您就可以知道其中一个 FD 何时准备好读取或写入。

看看这些 class notes用于讨论使用管道和 dup2。

这里介绍libevent ,C 语言的常见事件循环之一。

对于其他语言,您将执行类似的操作。例如,对于 Python,请查看对子进程的 asyncio 支持。

关于c - 运行多个 fork 进程并不断读取它们的标准,同时打印到它们的标准,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46395591/

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