change - Detectando CTRL+C en Node.js
javascript event listener (2)
Para aquellos que necesitan la funcionalidad, encontré la muerte (nódulo npm, ¡ja!) .
El autor también afirma que funciona en Windows:
Solo ha sido probado en sistemas POSIX compatibles. Aquí hay una agradable discusión sobre las señales de Windows, aparentemente, esto ha sido arreglado / mapeado.
Puedo confirmar que CTRL + C funciona en win32 (sí, estoy sorprendido).
Obtuve este código de una pregunta SO diferente, pero el nodo se quejó de usar process.stdin.setRawMode en lugar de tty, así que lo cambié.
Antes de:
var tty = require("tty");
process.openStdin().on("keypress", function(chunk, key) {
if(key && key.name === "c" && key.ctrl) {
console.log("bye bye");
process.exit();
}
});
tty.setRawMode(true);
Después:
process.stdin.setRawMode(true);
process.stdin.on("keypress", function(chunk, key) {
if(key && key.name === "c" && key.ctrl) {
console.log("bye bye");
process.exit();
}
});
En cualquier caso, solo está creando un proceso de nodo totalmente no responde que no hace nada, con el primero quejándose de tty
, luego arrojando un error, y el segundo simplemente haciendo nada y deshabilitando el controlador nativo CTRL + C de Node, por lo que ni siquiera se da por vencido nodo cuando lo presiono. ¿Cómo puedo manejar con éxito Ctrl + C en Windows ?
Si intenta capturar la señal de interrupción SIGINT
, no necesita leer desde el teclado. El objeto de process
de nodejs
expone un evento de interrupción:
process.on(''SIGINT'', function() {
console.log("Caught interrupt signal");
if (i_should_exit)
process.exit();
});
Editar : no funciona en Windows sin una solución alternativa. Mira aquí