是否有可能使用Node.JS获取父进程ID?我想检测父母是否被杀害或者以不能通知孩子的方式失败。如果发生这种情况,孩子的父进程ID应该变为1.Node.JS父进程ID
这会优于需要父级定期发送保持活动状态的信号,并且最好还是运行ps
命令。
是否有可能使用Node.JS获取父进程ID?我想检测父母是否被杀害或者以不能通知孩子的方式失败。如果发生这种情况,孩子的父进程ID应该变为1.Node.JS父进程ID
这会优于需要父级定期发送保持活动状态的信号,并且最好还是运行ps
命令。
您可以使用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()
通话
我从原生OSX应用程序作为后台工作内开始发送的Node.js PID作为参数。为了使Node.js的退出时消耗node.js的标准输出父进程死亡/退出,我做了以下内容:
// Watch parent exit when it dies
process.stdout.resume();
process.stdout.on('end', function() {
process.exit();
});
容易这样,但我不能完全肯定,如果这是你经历了什么要求;-)
你使用系统“儿童进程?” – Emmerman 2011-04-06 12:06:04
@Emmerman:我不确定你的意思。父节点运行'require('child_process')。spawn(process.argv [0],['path_to_child.js'])'以启动子节点。然后,如果需要与孩子交谈,则使用孩子的标准输入和标准输出。 stderr被传送到日志。我猜测答案是肯定的? – 2011-04-06 12:11:15