在node-dev下检测应用程序重启

时间:2013-11-19 07:16:22

标签: javascript node.js node-dev

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

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

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

我使用的是Windows XP。

1 个答案:

答案 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进行父/子通信的示例,如果有帮助的话。