使用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
。
答案 0 :(得分:1)
文档说process.stdout
只是一个可写流,所以你不能管它。奇怪的是它不会抛出Error: Cannot pipe. Not readable.
。此外,cp.stdout
是一个可读流,因此它应该管道。