如何重新启动Node.js子进程
我正试图以child_process
的名义重新启动某个serverSpawnProcess
。我可以让它停下来,但我不能再开始了。
serverSpawnProcess.stdin.write('stop\n');
serverSpawnProcess = null;
setTimeout(function() {
serverSpawnProcess = spawn('java', [
'-Xmx512M',
'-Xms512M',
'-jar',
'server_files/minecraft_server.jar',
'nogui'
]);
response.send('r');
}, 10000);
是我以为我会去做它,但它只会停止服务器,它不会再次产生它。 Node.js 5.3.0如果有帮助的话。
编辑为了其他任何寻找如何做到这一点的人,我最终将spawn放入一个函数中,我称之为如此
serverSpawnProcess.on("close", function() {
response.send('r2');
// Wait for process to exit, then run again
startServer();
});
回答如下:
所以我的猜测是在你的Minecraft服务器仍在运行10秒后超时(根据文档它将一些数据保存到磁盘和东西)并且当你尝试运行另一个实例时由于端口仍然被使用而失败。
试试这样:
serverSpawnProcess.stdin.write('stop\n');
serverSpawnProcess.on("close", function() {
// Wait for process to exit, then run again
serverSpawnProcess = spawn('java', [
'-Xmx512M',
'-Xms512M',
'-jar',
'server_files/minecraft_server.jar',
'nogui'
]);
});
同样正如https://stackoverflow/users/1139700/ross建议的那样,为错误事件添加一个监听器,这样你就可以确切地知道你的问题是什么。
serverSpawnProcess.on("error", function(err) {
// ugh, something went wrong
console.log("Server error:", err);
});
如何重新启动Node.js子进程
我正试图以child_process
的名义重新启动某个serverSpawnProcess
。我可以让它停下来,但我不能再开始了。
serverSpawnProcess.stdin.write('stop\n');
serverSpawnProcess = null;
setTimeout(function() {
serverSpawnProcess = spawn('java', [
'-Xmx512M',
'-Xms512M',
'-jar',
'server_files/minecraft_server.jar',
'nogui'
]);
response.send('r');
}, 10000);
是我以为我会去做它,但它只会停止服务器,它不会再次产生它。 Node.js 5.3.0如果有帮助的话。
编辑为了其他任何寻找如何做到这一点的人,我最终将spawn放入一个函数中,我称之为如此
serverSpawnProcess.on("close", function() {
response.send('r2');
// Wait for process to exit, then run again
startServer();
});
回答如下:
所以我的猜测是在你的Minecraft服务器仍在运行10秒后超时(根据文档它将一些数据保存到磁盘和东西)并且当你尝试运行另一个实例时由于端口仍然被使用而失败。
试试这样:
serverSpawnProcess.stdin.write('stop\n');
serverSpawnProcess.on("close", function() {
// Wait for process to exit, then run again
serverSpawnProcess = spawn('java', [
'-Xmx512M',
'-Xms512M',
'-jar',
'server_files/minecraft_server.jar',
'nogui'
]);
});
同样正如https://stackoverflow/users/1139700/ross建议的那样,为错误事件添加一个监听器,这样你就可以确切地知道你的问题是什么。
serverSpawnProcess.on("error", function(err) {
// ugh, something went wrong
console.log("Server error:", err);
});