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