Nodejs – spawn.stdout和process.stdout的区别
玩child_process,我想pipe生成的CP输出到自定义stream。
我不明白为什么在第一种情况下pipe道不工作,并在第二个。
预置
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);
输出login到terminal,但不pipe它。
工作
var spawnedProcess = cp.spawn('ls', [], {}); spawnedProcess.stdout.pipe(writable);
pipe道输出为writable
。
该文件说process.stdout
只是一个可写的stream,所以你不能从它pipe道。 这很奇怪,它不会抛出一个Error: Cannot pipe. Not readable.
Error: Cannot pipe. Not readable.
虽然。 此外, cp.stdout
是一个可读的stream,所以它pipe道,因为它应该。