我创建了一个节点脚本来启动子进程,我已成功将其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()
答案 0 :(得分:1)
spawn('prg', [], { stdio: 'inherit' });
如果您需要将子数据转换为自定义对象,请使用管道,然后安装流数据回调 - 例如您已经执行的操作。
如果第一级子节点是一个节点进程,它需要通过'继承'模型生成孙子孙,这两个数据都可供父节点使用。
否则,孩子必须使用'pipe'生成并安装处理程序,然后将它们提供给适当的流:例如,将孙子的错误写入child的stderr,依此类推。
如果孙子是非节点程序,'inherit'是所需的模型。
如果孩子是非节点,则可能无法获取孙子数据,因为数据的可用性将取决于子进程如何产生孙子并处理其流。
< / LI>希望这有帮助。