获取 node.js 中所有嵌套子进程的标准输出
Posted
技术标签:
【中文标题】获取 node.js 中所有嵌套子进程的标准输出【英文标题】:get stdout of all nested child process in node.js 【发布时间】:2016-04-26 08:39:32 【问题描述】:我已经创建了一个节点脚本来启动一个子进程,并且我已经成功地将其标准输出重定向到控制台。
但是如果子进程创建了一个嵌套的子进程,那么我就无法获得它的标准输出或标准输入。
我有一个模糊的想法,我必须创建流并将其传递给父进程,但我现在不确定。
有人可以给出如何完成它的方法吗?
下面是我当前启动子进程的代码
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】:相关链接:Node API documentation
如果您需要在流中获取孩子(和孙子)的数据,最好的选择是继承流:spawn('prg', [], stdio: 'inherit' );
如果您需要将子数据放入自定义对象,使用管道,然后安装流数据回调 - 例如您已经做过的。
如果第一级子进程是节点进程,则需要通过“继承”模型生成孙子进程,以便父进程可以使用这两个数据。
否则,子级必须使用“管道”生成并安装处理程序,然后将它们馈送到适当的流中:例如,将孙子级的错误写入子级的 stderr,等等。
如果孙子是非节点程序,“继承”是所需的模型。
如果子进程是非节点,则可能无法获取孙子数据,因为数据的可用性将取决于子进程如何生成孙子进程并处理其流。
希望这会有所帮助。
【讨论】:
以上是关于获取 node.js 中所有嵌套子进程的标准输出的主要内容,如果未能解决你的问题,请参考以下文章