2017-09-24 32 views
-2

我正在运行X数量的进程,我可以遍历,以便运行有master和slave的程序'采取主人的命令,并返回一个字符串。运行多个分叉的进程并不断读取他们的标准输出,同时打印到他们的标准

我在C写作。我想知道如何能够设置管道和分叉进程之间的标准进出读取。我目前能够让他们一次只工作一个,直到被杀,但我想简单地阅读一行,然后转到下一个过程。任何帮助?

+0

阅读本书中解释如何使用poll()系统调用的章节。 –

回答

0

通常,这种编程的通用策略是设置一个事件循环。 您可以设置管道并将它们连接到程序的stdin和stdout。 您不指定您正在使用的语言。 在C中,您将创建两个管道,一个用于读取,另一个用于写入。 然后你会分叉。在fork之后,在子节点中,关闭stdin和stdout,然后使用dup2系统调用将管道filedescriptors的一端复制到子节点。

在父级中,您将每个进程连接到一个事件循环,它可以让您知道何时您的某个FD准备好读取或写入。

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

这里的介绍libevent,公共事件的一个循环为C.

为你做同样的事情其他语言。例如,对于Python,请查看asyncio对子进程的支持。

+0

对不起,有C作为我的语言,但尼尔在那里编辑我的标签。感谢您的帮助,但我会研究事件循环:) – lighthou

相关问题