Node.JS父进程ID

时间:2011-04-06 12:02:46

标签: node.js process

是否可以使用Node.JS获取父进程ID?我想检测父母是否被杀死或失败,以致无法通知孩子。如果发生这种情况,子进程的父进程ID应为1。

这比要求父母定期发送保持活动信号更好,也比运行ps命令更可取。

2 个答案:

答案 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()调用

中发送pid作为参数

答案 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();
});

很容易就是这样,但我不确定这是否是你一直要求的; - )