通过前面几文的学习我们知道,通过使用execFile、spawn、exec可以打开外部进程并让它单独运行。

但如果在某些情况下主进程崩溃了,那么同步进程也会挂起。

为了避免这种情况发生、让子进程不受主程序状态影响,那么可以使用子进程分离技术。

spawn有一个方法可以做到子进程与主进程分离、独立。

代码如下:

var cp = require("child_process");

cp.spawn("notepad",[],{detached:true},function(err,stdout,stderr){
    if(err){
        console.error(err);
    }
    console.log("stdout:",stdout)
    console.log("stderr:",stderr);
});

在本例程中,主程序会启动记事本。即时这时退出nodejs主进程(Ctrl+c),记事本也不会被关闭。

参考资料:

而在以往,没有增加这个参数时,或设置detached为false。那么当关闭子进程时,记事本也会被关闭。