如何阅读child_process.spawnSync标准输出与标准输入输出选项 '继承'

问题描述:

var childProcess = cp.spawnSync(command, args, { 
    cwd: process.cwd(), 
    env: process.env, 
    stdio: 'inherit', 
    encoding: 'utf-8' 
}); 

childProcess.output总是EQ [NULL,NULL,NULL]如何阅读child_process.spawnSync标准输出与标准输入输出选项 '继承'

process.stdout.write钩并没有给我任何输出

+0

您是否发现此解决方案?我有同样的问题,我需要使用''继承''为了保持进度显示,但我不能钩'stdout.write'或监听'data'事件... –

+0

@FranDios我的解决方法是使用管道捕捉进程输出'stdio:[0,isOutputNeeded? 'pipe':1,2],' –

如果您不使用'pipe'childProcess.output将不包含输出。

var cp = require('child_process'); 

var command = 'echo'; 
var args = ['hello', 'world']; 

var childProcess = cp.spawnSync(command, args, { 
    cwd: process.cwd(), 
    env: process.env, 
    stdio: 'pipe', 
    encoding: 'utf-8' 
}); 

console.log(childProcess.output); // [ null, 'hello world\n', '' ] 

这是八九不离十有点儿在documentation for child.stdout和其他地方所指出的,但它并不完全明确。 (通过任何方式,如果您希望看到改进,请打开the Node.js repo的拉取请求。)

+0

这样我就会错过child_process进度显示。这对我很重要。 –