https://juejin.cn/post/6844903444839399438
守护进程:进程意外退出时, fork一个新进程继续继续工作
创建守护进程
- 创建进程a
- a进程fork出b进程
- b执行setsid
- 说明, setsid是Linux中的方法, 对应node中的require(‘child_process’).spawn(setsid: setsid函数将创建新的会话,并使得调用setsid函数的进程成为新会话的领头进程。调用setsid函数的进程是新创建会话中的惟一的进程组,进程组ID为调用进程的进程号。)
- 该进程变成一个新会话的会话领导
- 该进程变成一个新进程组的组长
- 该进程没有控制终端。
- 退出a进程
spawn - child_process.spawn 使用指定的命令行参数创建新进程。
fork - child_process.fork 是 spawn()的特殊形式。
与spawn方法不同的是,fork会在父进程与子进程之间,建立一个通信管道,用于进程之间的通信。
简单的进程守护(实现)
``` 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); ```