Node.JS ID родительского процесса - PullRequest
1 голос
/ 06 апреля 2011

Можно ли получить идентификатор родительского процесса, используя Node.JS?Я хотел бы определить, убит ли родитель или произошел сбой таким образом, что он не может уведомить ребенка.Если это произойдет, идентификатор родительского процесса дочернего процесса должен стать равным 1.

Это было бы предпочтительнее, чем требование от родителя периодически отправлять сигнал поддержания активности, а также предпочтительнее выполнения команды ps.

Ответы [ 2 ]

5 голосов
/ 06 апреля 2011

Вы можете использовать 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

Также вы можете отправить pid в качестве аргумента в spawn() call

2 голосов
/ 29 марта 2013

Я запускаю Node.JS из собственного OSX-приложения в качестве фонового рабочего. Чтобы заставить node.js завершиться, когда родительский процесс, который использует стандартный выход node.js, умирает / выходит, я делаю следующее:

// Watch parent exit when it dies

process.stdout.resume();
process.stdout.on('end', function() {
  process.exit();
});

Так просто, но я не совсем уверен, что это то, о чем ты просил; -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...