Ik kreeg deze code van een andere SO-vraag, maar het knooppunt klaagde om process.stdin.setRawMode te gebruiken in plaats van tty, dus ik heb het gewijzigd.
Vroeger:
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);
Na:
process.stdin.setRawMode(true);
process.stdin.on("keypress", function(chunk, key) {
if(key && key.name === "c" && key.ctrl) {
console.log("bye bye");
process.exit();
}
});
In ieder geval, het creëert gewoon een totaal niet-reagerend knooppuntproces dat niets doet, waarbij de eerste klaagt over tty
, dan een foutmelding geeft, en de tweede gewoon niets doet en Node’s native CTRL+Chandler, dus het sluit het knooppunt niet eens af als ik erop druk. Hoe kan ik succesvol omgaan met Ctrl+Cin Windows?
Antwoord 1, autoriteit 100%
Als u het onderbrekingssignaal SIGINT
probeert op te vangen, hoeft u niet vanaf het toetsenbord te lezen. Het process
object van nodejs
onthult een interruptgebeurtenis:
process.on('SIGINT', function() {
console.log("Caught interrupt signal");
if (i_should_exit)
process.exit();
});
Bewerken: werkt niet op Windows zonder een tijdelijke oplossing. Zie hier
Antwoord 2, autoriteit 3%
Voor degenen die de functionaliteit nodig hebben, vond ik death (npm nodule, hah!).
Auteur beweert ookdat het op Windows werkt:
Het is alleen getest op POSIX-compatibele systemen. Hier is een leuke discussie over Windows-signalen, blijkbaar is dit opgelost/in kaart gebracht.
Ik kan bevestigen dat CTRL+Cwerkt op win32 (ja, ik ben verrast).