获取node.js中所有嵌套子进程的stdout

时间:2016-04-26 08:39:33

标签: node.js shell process pipe ipc

我创建了一个节点脚本来启动子进程,我已成功将其stdout重定向到控制台。

但是如果子进程创建了一个嵌套的子进程,那么我无法得到它的stdout或stdin。

我有一个模糊的想法,我必须创建流并将其传递给父进程,但我现在不确定。

有人可以说明如何实现它。

以下是我目前启动子进程的代码

spawn = require('child_process').spawn;
ls = spawn "ruby" , [ @editor.getPath() ]
ls.stdout.on 'data', (data) -> console.log data.toString()
ls.stderr.on 'data', (data) -> console.log data.toString()

1 个答案:

答案 0 :(得分:1)

相关链接:Node API documentation

  • 如果您需要在流中获取孩子(和孙子)的数据,最好的选择是继承流:

spawn('prg', [], { stdio: 'inherit' });

  • 如果您需要将子数据转换为自定义对象,请使用管道,然后安装流数据回调 - 例如您已经执行的操作。

  • 如果第一级子节点是一个节点进程,它需要通过'继承'模型生成孙子孙,这两个数据都可供父节点使用。

  • 否则,孩子必须使用'pipe'生成并安装处理程序,然后将它们提供给适当的流:例如,将孙子的错误写入child的stderr,依此类推。

  • 如果孙子是非节点程序,'inherit'是所需的模型。

  • 如果孩子是非节点,则可能无法获取孙子数据,因为数据的可用性将取决于子进程如何产生孙子并处理其流。

    < / LI>

希望这有帮助。