Nodejs - spawn.stdout和process.stdout之间的区别

时间:2016-01-26 10:02:20

标签: node.js child-process

使用child_process,我想将生成的cp输出管道输出到自定义流。

我不明白为什么在第一种情况下管道不起作用而在第二种情况下。

预设

const cp = require('child_process');
const process = require('process');
const stream = require('stream');

var writable = new stream.Writable();
writable._write = function (data) {
    console.log(data.toString());
};    

不起作用

var spawnedProcess = cp.spawn('ls', [], {
    stdio: [process.stdin, process.stdout, process.stderr] 
});
process.stdout.pipe(writable);

输出登录终端但不管道。

有效吗

var spawnedProcess = cp.spawn('ls', [], {});
spawnedProcess.stdout.pipe(writable);

管道输出到writable

1 个答案:

答案 0 :(得分:1)

文档说process.stdout只是一个可写流,所以你不能管它。奇怪的是它不会抛出Error: Cannot pipe. Not readable.。此外,cp.stdout是一个可读流,因此它应该管道。