在node.js中获取所有嵌套的subprocess的标准输出

我创build了一个节点脚本来启动subprocess,并且我已经成功地将其stdoutredirect到控制台。

但是,如果subprocess创build一个嵌套的subprocess,那么我无法得到它的标准输出或标准input。

我有一个模糊的想法,我必须创buildstream,并将其pipe道父进程,但我不知道现在。

有人可以请一个方法来实现它。

下面是我现在启动subprocess的代码

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() 

相关链接: Node API文档

  • 如果您的需要是在您的stream中获取孩子(和孙子的)数据,最好的select是inheritance这些stream:

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

  • 如果您的需要是将子数据导入自定义对象,请使用pipe道,然后安装stream数据callback – 例如您已经做了什么。

  • 如果一级孩子是一个节点进程,则需要通过“inheritance”模型来产生孙子,这样两个数据都可以被父级使用。

  • 否则,孩子必须用“pipe道”产生并安装处理程序,然后将它们馈送到适当的stream中:例如,将孙子的错误写入孩子的stderr,等等。

  • 如果孙子是非节点程序,那么“inheritance”是所需的模型。

  • 如果孩子是非节点的,可能不可能得到孙儿的数据,因为数据的可用性将取决于孩subprocess如何产生孙子并处理它的stream。

希望这可以帮助。