跳到主要内容

进程守护

2024年04月09日
柏拉文
越努力,越幸运

启动方式


守护进程的启动方式,过程如下:

  • 创建一个进程A
  • 在进程A中创建进程B,我们可以使用fork方式,或者其他方法
  • 对进程B执行 setsid 方法
  • 进程A退出,进程B由init进程接管。此时进程B为守护进程

setsid


setsid 工作

setid主要完成三件事:

  1. 该进程变成一个新会话的会话领导
  2. 该进程变成一个新进程组的组长
  3. 该进程没有控制终端

然而, Nodejs中并没有对 setsid 方法的直接封装,翻阅文档发现有一个地方是可以调用该方法的。

setsid 调用

var spawn = require('child_process').spawn;
var process = require('process');

var p = spawn('node',['b.js'],{
detached : true
});
console.log(process.pid, p.pid);
process.exit(0);

spawn 的第三个参数中,可以设置 detached 属性,如果该属性为 true,则会调用 setsid 方法。这样就满足我们对守护进程的要求。