我正在使用Node-dev开发Node.js应用程序。每次我保存应用程序的脚本(按Control-S)node-dev将重新启动我的应用程序。现在问题是,我可以通过应用程序检测重启,以便在程序终止之前保存一些数据吗?
process.on('SIGINT', function() {
console.log('SIGINT');
});
上面的代码没有检测到这种重启。
我使用的是Windows XP。
答案 0 :(得分:3)
在您的孩子中,在exit
process
事件中添加一位听众:
process.on('exit', function() {
// Save application state
});
从源代码可以看出,node-dev
分叉启动脚本。当一个文件发生更改时,父launches its stop()
function等待子进程退出然后重新启动它:
child.on('exit', start)
stop()
stop()
function发送消息:
ipc.send({exit: true}, child)
ipc object使用child.send()
method:
if (dest.send) dest.send(m)
node-dev
无法发送SIGINT
信号,但可以使用IPC工作。您似乎可以通过在message
event of process
上添加一个侦听器来检测应用程序的重新启动...但这不起作用(即message
事件永远不会在{{process
上发出1}}对象)。我的猜测是process.exit()
是同步的,我们的处理程序没有机会运行。
编辑: here是一个要点,其中包含使用节点中的IPC进行父/子通信的示例,如果有帮助的话。