~
如何退出终端运行?
使用 setsid
在 Node 中如何调用 setsid 方法呢? Node 尚未对 setsid 进程封装,但是我们可以通过 child_process.spawn 来调用该方法。 spawn 中有一个配置项 detached,当其 detached: true 时,会调用 setsid 方法
在非 Windows 平台上,如果 options.detached 设置为 true,则子进程将成为新进程组和会话的领导者。 子进程可以在父进程退出后继续运行。
开始实现
在 command 中使用 child_process.spawn(master) 创建子进程 对进程 master 执行 setsid 方法 进程 command 退出,进程 master 由 init 进程接管,此时进程 master 为守护进程 创建 command,使用 spawn 方法衍生子进程
//command.js const { spawn } = require('child_process');
spawn('node', ['./master.js'], { detached: true, });
process.exit(0); 当我们执行 node command 之后,我们的主进程就会关闭,但是我们的子进程还在继续运行,且不受终端控制,该进程就是我们创建的守护进程