我在Node.js中创建了一个小型私有游戏服务器管理器;目前,它由通过child_process
产卵运行游戏:通过nodejs重新连接产生的进程
var server = spawn(cmd, args, { cwd: 'something' });
只要经理继续运行,我能管的命令和处理孩子,我想。但是,请考虑我的经理崩溃或关闭的可能性。我如何重新连接到以前衍生的子进程(当管理者关闭时仍然运行)?我可以存储pidfiles以基于pid尝试重新连接;但我不知道如何获得child_process
对象访问该对象的子对象。
我真的希望这可以恢复;任何帮助表示赞赏,谢谢!
请注意:游戏服务器是专有的,有些例子是我的世界,来源DS等。假设我没有访问服务器源。
编辑
阅读从节点的child_process
一些源代码看起来,如果你指定称为stdinStream
,stdoutStream
选项的属性,或者stderrStream
它应该只是打开一个套接字它像后。 (见行428 - 496)。所以问题是,我怎么停止产生实际上做一个产卵,而是只是基于指定的PID和我通过的流设置其值。 (我会得到我的stdinStream
做fs.createWriteStream('/proc/PID/fd/0');
它应该工作,因为这FD作为一个管道创建。)
hmm。我不知道你是否可以用任何编程语言来做到这一点,更不用说js/node了。如果是我,我会看看使用套接字来解决这个问题 – ControlAltDel 2012-04-11 19:48:58
我通过子进程的stdin传递一些命令,因为我几乎没有使用* nix套接字的经验,我怎么才能完成重新获得'管道'到孩子的“stdin”? – Chad 2012-04-11 21:05:40
任何人对此有任何想法? – Chad 2012-04-15 17:17:04