是否可以使用Node.JS获取父进程ID?我想检测父母是否被杀死或失败,以致无法通知孩子。如果发生这种情况,子进程的父进程ID应为1。
这比要求父母定期发送保持活动信号更好,也比运行ps
命令更可取。
答案 0 :(得分:5)
您可以使用pid文件。像这样的东西
var util = require('util'),
fs = require('fs'),
pidfile = '/var/run/nodemaster.pid';
try {
var pid = fs.readFileSync(pidfile);
//REPLACE with your signal or use another method to check process existence :)
process.kill(pid, 'SIGUSR2');
util.puts('Master already running');
process.exit(1);
} catch (e) {
fs.writeFileSync(pidfile, process.pid.toString(), 'ascii');
}
//run your childs here
您也可以在spawn()
调用
答案 1 :(得分:2)
我从本机OSX应用程序中作为后台工作程序启动Node.JS。要在使用node.js stdout的父进程死亡/退出时退出node.js,我会执行以下操作:
// Watch parent exit when it dies
process.stdout.resume();
process.stdout.on('end', function() {
process.exit();
});
很容易就是这样,但我不确定这是否是你一直要求的; - )