NodeJS 进程附加多个标准输入

kt06eoxx  于 2023-01-25  发布在  Node.js
关注(0)|答案(1)|浏览(123)

我有一个进程,它可以接收两个stdin

this.child = child_process.spawn(
    'command',
    [ '-', 'pipe:3' ],
    { 'stdio' => [null, null, null, ???unknown] } 
);

this.child.stdin.write(data);

this.child.stdio[3]??.write(anotherData); //This is the unknown part.

是否可以创建两个stdin,而不创建另一个子进程?

xuo3flqw

xuo3flqw1#

一个进程只有一个stdin(this.child.stdin),但是你可以将另外两个流(input1input2)“多路复用”到其中,就像两个用户同时在同一个键盘上打字一样,这两个输入是如何交错的几乎是不可预测的。
如果这是你想要的:

var proc = new stream.PassThrough();
var input1ended, input2ended;
input1.on("data", function(chunk) {
  proc.push(chunk);
})
.on("end", function() {
  if (input2ended) proc.push(null);
  input1ended = true;
});
input2.on("data", function(chunk) {
  proc.push(chunk);
})
.on("end", function() {
  if (input1ended) proc.push(null);
  input2ended = true;
});
proc.pipe(this.child.stdin);

相关问题