2015-03-08 5 views
2

Я использую server = child_process.spawn('node', ['app.js']); для запуска сервера узлов. И я убить этот процесс, делая server.kill('SIGKILL');callback для kill child_process

Я хочу сделать некоторые очистки в app.js, как близко к соединению с БД, до того, как процесс сервера был убит, как я могу это сделать?

ответ

3

Поймайте мероприятие и сделайте очистку внутри. Кроме того, используйте SIGTERM, поскольку SIGKILL нельзя кэшировать как @Dan D..

process.on('SIGTERM', function handleSigterm() { 
    db.close(); 
    //more cleanup code 
    //then truly exit. 
    process.exit(); 
}); 

Это должно быть сделано в файле app.js.

+2

Но SIGKILL не может быть пойман, процесс умрет прежде, чем это возможно. Но SIGTERM будет работать. –

+0

получил 'Ошибка: uv_signal_start EINVAL', как указано здесь: https://github.com/joyent/node/issues/6339 – Gimm

+0

Nice catch @DanD. Я добавлю рекомендацию в ответ. –

Смежные вопросы