Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

189
Visualizações
¿Cómo atrapo * e ignoro * SIGINT en Node.js?

Encontré una publicación diferente sobre un tema relacionado ( Cómo realizar una operación asíncrona al salir ), pero tal vez no se aplica a macOS, o simplemente ya no es cierto cuando se ejecuta Node.js v14.

Mi pregunta original era más complicada. No pude obtener setTimeout s o await a que funcionara correctamente en una devolución de llamada (o devolución de llamada asíncrona) para SIGINT. Pero luego me di cuenta de que lo que realmente necesitaba hacer, ante todo, era poder capturar e ignorar SIGINT.

Si pudiera hacer eso, también podría apagarme en respuesta a SIGINT, si quisiera y cuando quisiera.

Así que volví a lo básico para ver si podía simplemente deshabilitar SIGINT. no pude

Podía detectar SIGINT, podía responder con mensajes de consola o cualquier otro código síncrono , pero mi código se iba a cerrar, y cerraría pronto, sin importar lo que hiciera.

 process.on('SIGINT', () => { console.log('here'); return false; }); process.on('SIGINT', () => { console.log('here'); return true; }); process.on('SIGINT', () => { console.log('here'); return undefined; }); process.on('SIGINT', () => { console.log('here'); return new Promise(resolve => { console.log(resolve); }); });

Ninguno de estos enfoques evita que mi servidor Node.js se apague después de presionar Ctrl + C o enviar un SIGINT al proceso.

ACTUALIZAR:

Cuando ejecuto mi servidor a través node app.js , ¡la intercepción SIGINT funciona como debería!

Aparentemente, me he estado volviendo loco por un artefacto de ejecutar mi aplicación de servidor indirectamente a través nodemon . Un Ctrl + C desde la terminal de mi IDE, o una interrupción enviada usando el botón gráfico rojo 🟥 (detener) del IDE no se puede capturar correctamente, porque la señal resultante realmente se envía a nodemon. Sin embargo, fuera del entorno IDE, sin que nodemon se dé cuenta de las cosas, mi apagado elegante funciona como quiero.

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Si observa este tipo de comportamiento de apagado inesperado, siempre piense "¿quién está enviando qué señal?". Dependiendo del sistema operativo y otros procesos, se podrían enviar muchas otras señales, por ejemplo, consulte ¿Cómo se relaciona SIGINT con las otras señales de terminación, como SIGTERM, SIGQUIT y SIGKILL? .

Lo que probablemente sucedía en su caso era que el proceso de nodemon estaba enviando un SIGKILL después del SIGINT . Existen varias señales de este tipo que no se pueden cancelar. nodemon permite controlar la señal de terminación predeterminada a través de --signal , consultehttps://github.com/remy/nodemon/blob/master/doc/cli/options.txt . nodemon también se puede configurar a través de un archivo de configuración local y global, consulte https://github.com/remy/nodemon/blob/master/doc/cli/config.txt .

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda