切换到subprocess标准输出并返回

我有一个启动多个subprocess的NodeJS程序。 我想要做的是循环每一个,显示标准输出,无论我select哪一个。

我已经尝试用'pipe道'启动subprocess,然后执行

process.stdout.pipe(childproc.stdout); 

但是,挂起,然后崩溃。

我可以用'inherit'来显示,但是我不能在孩子之间切换。 然后我需要能够不显示任何东西,并显示程序自己的信息。

任何想法如何redirect我的标准输出之间的一系列subprocess?

听起来像一个非常有趣的问题。 基于最近我所做的一些工作,我有一个可能的解决scheme。 如果你要产生每个进程,并且每个进程都有一个标准输出处理程序,那么你可以检查一个全局标志,告诉你输出哪个标准输出。

 var child = spawn(sExeName, aArgs); var child2 = spawn(sExeName2, aArgs2); var childOutput = false; var child2Output = false child.stdout.on('data', function (data) { if(childOutput === true) { process.stdout.write(data.toString()); } }); child.stderr.on('data', function (data) { if(childOutput === true) { process.stdout.write(data.toString()); } }); child2.stdout.on('data', function (data) { if(child2Output === true) { process.stdout.write(data.toString()); } }); child2.stderr.on('data', function (data) { if(child2Output === true) { process.stdout.write(data.toString()); } }); 

现在只要使用任何你喜欢的方法来设置标志childOutput和child2Output为true或false,你可以closures标准输出和stderr转储到你的subprocess的terminal。

现在,如何避免将主进程stdout放在那里,我认为你必须将console.log包含在一个函数中,以确保你不会同时输出subprocess。