有没有办法在执行child_process.spawn时降低stdout的highWaterMark?
我读到有可能为exec降低它,但我实际上需要启动一个进程,我可以通过stdin传递数据并通过stdout读出结果。
highWaterMark设置为高,导致读取标准输出不可接受的延迟。
我试图将流对象传递给spawn链接:
avconv = spawn("avconv", params, {
stdio: [process.stdin, process.stdout, process.stderr]
});
工作正常,但当我尝试为女巫创建自己的流时,我可以定义一个自定义的highWaterMark:
var readable = new stream.Readable();
avconv = spawn("avconv", params, {
stdio: [process.stdin, readable, process.stderr]
});
节点不接受它。导致类型错误。
答案 0 :(得分:0)
我可以通过设置以下内容来降低子stdio流的缓冲区:
child.stdin._writableState.highWaterMark
child.stdout._readableState.highWaterMark
但是这个过程似乎还有其他的缓冲,所以降低这些可能会有所帮助,也可能没有多大帮助。
文档说传入stdio选项的流必须有一个底层文件描述符,例如附加到文件或套接字的文件描述符。