Восстановление ссылки на отсоединенный дочерний процесс после перезапуска родительского процесса - PullRequest
0 голосов
/ 27 января 2019

У меня есть скрипт Node.js, который разветвляет другой процесс, подобный следующему:

// parent.js

const { fork } = require('child_process');

const child = fork('child.js', [], { detached: true });

child.pid // e.g. 1234

child.send({ test: 'hello world!' })

Для документов detached: true позволяет дочернему процессу продолжить работу после выхода из родительского процесса, что в точностичто я хочу здесь.

Дочерний процесс предназначен для того, чтобы остаться в живых, даже если родительский процесс аварийно завершает работу или перезапускается (или если есть несколько процессов, которые должны работать с одним и тем же дочерним процессом).Думайте о дочернем процессе как о демоне с одним экземпляром.

Я знаю, что родительский процесс никогда не должен завершаться сбоем или останавливаться, пока работает дочерний процесс, но в моей программе это не так;родительский процесс остановится во время работы дочернего процесса.

Это прекрасно работает, пока работает родительский процесс.У меня проблема, когда родитель перезагружается.Говоря простым языком, как мне сказать родительскому процессу это:

эй родитель, вот процесс с прошлого раза, который выполняется под pid: 1234. Я не хочу, чтобы вы разветвляли новый,Можете ли вы отправлять сообщения на существующий?

Чтобы уточнить, проблема здесь не в сохранении pid.Речь идет о получении нового объекта, подобного ChildProcess, который имеет ссылку на старый.

Если то, что я здесь делаю, архитектурно неверно / невозможно из-за характера процессов, как иначе вы бы порекомендовали это сделать?например, два сервера, взаимодействующие через сокеты TCP?

...