0

我有这个代码:

var convert = spawn("gm", ["convert"].concat(parameters));
// output stream
obj.outStream = new BufferList();

convert.stderr.pipe(process.stderr, { end: false });
// put the output in the stream TOO
convert.stdout.pipe(obj.outStream);
// send the image to the input
obj.stream.pipe(throttle).pipe(convert.stdin);

如何抑制“转换”过程的输出,而不抑制 obj.outStream 的输入和输出?

原因是我不想像现在那样将它输出给用户。

4

2 回答 2

1

您在输出中看到的可能是convert.stderr因为您将其通过管道传输到process.stderr,这是您的子进程的主进程的错误输出。当您生成子进程时,默认情况下不会stdio处理。

var spawn = require('child_process').spawn'
var child = spawn('gm', ['convert']);

您显示的代码是您直接将孩子的管道stderr传输到主进程'stderr并管道stdout传输到您的outStream. 这意味着您可以看到的唯一可能的输出是convert.stderr.

要解决此问题,请忽略stderr.

var obj = {
  outStream: new BufferList()
};

var spawn = require('child_process').spawn'
var child = spawn('gm', ['convert'], {
  stdio: ['pipe', obj.outStream, 'ignore']
});

有了这个,你就可以stdin像往常一样拥有流,通过stdout管道传输到obj.outStreamm 并被stderr忽略。

于 2013-09-17T16:46:28.923 回答
0

请参阅文档,您可以使用侦听器或使用“忽略”属性。

于 2013-09-17T16:01:31.910 回答