У меня есть скрипт 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?