process.on(“exit”, callback)に登録しておくと、プロセスが終了する時に処理できる。

しかしそこで非同期処理を行うと、処理が終わる前にプロセスが終了してしまう。

使いたいところ


BlendMicroとのBLEでの通信をシリアルポートのように使えるモジュールを作ってるんだけど、プロセス終了時にperipheral.disconnect()しないとBlendMicro側がずっと開きっぱなしになって、再接続できなくなる。

ctrl+cでnodeを終了した時とかに、ちゃんとBLEを閉じたい。

こうした

for signal in ['SIGINT', 'SIGHUP', 'SIGTERM']
process.on signal, ->
peripheral.disconnect ->
process.exit 1
signal受け取れる事は知ってたけど、signalを握りつぶせる事は知らなかった。
peripheralを閉じる処理終わったら、自分でprocess.exitする必要がある。


node v0.12以上ならprocess.on(“beforeExit”, callback)が使える


ようになるらしい