Повторное подключение к созданному процессу через nodejs

Я создаю небольшой проприетарный менеджер игровых серверов на Node.js; в настоящее время он запускает игру, порождая через child_process:

var server = spawn(cmd, args, { cwd: 'something' });

. Пока менеджер продолжает работать, я могу передавать команды и иметь дело с дочерним элементом, как мне хотелось бы. Однако рассмотрите возможность того, что мой менеджер аварийно завершает работу или закрывается. Как мне затем повторно подключить к ранее порожденному дочернему процессу (, который все еще работал, пока менеджер не работал)? Я могу хранить pid-файлы, чтобы попытаться переподключиться на основе pid; но я не уверен, как получить объект child_processс доступом к дочерним объектам stdio.

Я действительно хотел бы, чтобы это можно было восстановить; любая помощь приветствуется, спасибо!


Пожалуйста, обратите внимание:Игровые серверы являются частными, например, Minecraft, Source DS и т. д. Предположим, что у меня нет доступа к серверу-источнику.


РЕДАКТИРОВАТЬ

После прочтения некоторого исходного кода из узла child_processпохоже, что если вы укажете свойство в опциях с именами stdinStream, stdoutStreamили stderrStream, оно должно просто открыть для него сокет. (См. строки 428-496). Таким образом, проблема заключается в том, как остановить порождение из на самом деле , выполняя порождение, и вместо этого просто установить его значения на основе указанного pid и потоков, которые я передаю. (Я бы получил свой stdinStream, выполнив fs.createWriteStream('/proc/PID/fd/0');, что должно сработать, так как этот fd создается как конвейер.)

8
задан Chad 13 April 2012 в 14:19
поделиться