Предотвращает ли перехват SIGINT в NodeJS стандартное поведение Ctrl + C?

Мое приложение nodejs, работающее в Windows, печатает ^C и возвращает приглашение cmd, когда я нажимаю Ctrl + C. Но когда я использую следующий обработчик SIGINT в своем коде:

process.on('SIGINT', (code) => {
console.log("Process exited due to Ctrl + C with code: " + code);

});

оператор в console.log() печатается, но процесс не завершается. Приглашение cmd не возвращается. Нажатие Ctrl + C несколько раз печатает одно и то же выражение снова и снова, но приглашение cmd не возвращается. Затем мне нужно убить процесс, закрыв оболочку. Изменяет ли обработка SIGINT поведение Ctrl + C по умолчанию?


person Sharan V K    schedule 13.05.2020    source источник


Ответы (1)


Это поведение описано в документации.

«SIGTERM» и «SIGINT» имеют обработчики по умолчанию на платформах, отличных от Windows, которые сбрасывают режим терминала перед выходом с кодом 128 + номер сигнала. Если для одного из этих сигналов установлен прослушиватель, его поведение по умолчанию будет удалено (Node.js больше не завершится).

Если вы хотите, чтобы он вышел, используйте process.exit(0).

person Klaycon    schedule 13.05.2020