Порт не освобожден, когда у меня есть пользовательский process.on ('exit') в nodejs - PullRequest
0 голосов
/ 05 октября 2019

Когда я обычно использую Ctrl + c (mac), чтобы остановить процесс узла, процесс прекращается и порт освобождается. Когда я использую process.on ('SIGINT'), процесс не уничтожается автоматически, я должен вручную убить процесс в порту. Почему это поведение? Перезаписываю ли я какой-либо фрагмент кода выхода по умолчанию при выполнении?

process.on('SIGINT', (code) => {
    console.log(`About to exit with code: ${code}`);
});

1 Ответ

2 голосов
/ 05 октября 2019

Согласно документации узла :

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

Так что да, вы перезаписываете поведение по умолчанию,Если - когда - вы закончили с обработкой сигнала, вы можете вызвать process.exit() для фактического завершения программы - после запуска возможных слушателей на 'exit'.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...