2

我正在使用 Node-dev 开发 Node.js 应用程序。每次我保存应用程序的脚本(按 Control-S)node-dev 都会重新启动我的应用程序。现在的问题是,我可以检测应用程序的重启,以便在程序终止之前保存一些数据吗?

process.on('SIGINT', function() {
   console.log('SIGINT');
});

上面的代码没有检测到这种重启。

我正在使用 Windows XP。

4

1 回答 1

3

在您的孩子中,在以下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 进行父/子通信的示例。

于 2013-11-19T08:41:48.437 回答