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フォークしてスクリプトを起動します。1 つのファイルが変更されると、親はその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 を使用した親子通信の例を示す Gist が役立ちます

于 2013-11-19T08:41:48.437 に答える