我正在使用Node.js创建一些child_processes (
require('child_process')
),我希望确保每个child_process的stdout/stderr不会传递到终端,因为我只想记录父进程的输出。是否有一种方法将child_processes中的stdout/stderr流重定向到/dev/null
或其他不是终端的地方?
https://nodejs.org/api/child_process.html
也许可以这样做:var n = cp.fork('child.js',[],{
stdio: ['ignore','ignore','ignore']
});
我刚刚尝试了一下,但好像没有起作用。
现在我试了这个:
var stdout, stderr;
if (os.platform() === 'win32') {
stdout = fs.openSync('NUL', 'a');
stderr = fs.openSync('NUL', 'a');
}
else {
stdout = fs.openSync('/dev/null', 'a');
stderr = fs.openSync('/dev/null', 'a');
}
然后是这个选项:
stdio: ['ignore', stdout, stderr],
但那样做并没有解决问题,不过使用“detached:true”选项似乎可以使其工作。
process.stdout.write
,这个怎么样? - Yerkenstdio
选项是针对spawn
而不是fork
,也许你想要使用silent
选项? - mzulch