node.js child_process spawn stdout 降低 highWaterMark

sol*_*sol 5 javascript stdout spawn child-process node.js

有没有办法在执行 child_process.spawn 时降低 stdout 的 highWaterMark?

我读到可能有一种方法可以为 exec 降低它,但我实际上需要启动一个进程,我可以通过 stdin 将数据传递到该进程并通过 stdout 读出结果。

highWaterMark 设置为 high 导致无法接受的读取标准输出延迟。

我试图将流对象传递给 spawn 链接:

avconv = spawn("avconv", params, {
  stdio: [process.stdin, process.stdout, process.stderr]
});
Run Code Online (Sandbox Code Playgroud)

效果很好,但是当我尝试为女巫创建自己的流时,我可以定义一个自定义的 highWaterMark:

var readable = new stream.Readable();

avconv = spawn("avconv", params, {
  stdio: [process.stdin, readable, process.stderr]
});
Run Code Online (Sandbox Code Playgroud)

节点不会接受它。导致类型错误。

pro*_*eta 1

我能够通过设置以下内容来降低子 stdio 流的缓冲区:

child.stdin._writableState.highWaterMark
child.stdout._readableState.highWaterMark
Run Code Online (Sandbox Code Playgroud)

但该过程似乎还进行了其他缓冲,因此降低这些缓冲可能有也可能没有太大帮助。

文档说传递到 stdio 选项的流必须具有底层文件描述符,例如附加到文件或套接字的文件描述符。