このコードは別の SO の質問から取得しましたが、node が tty ではなく process.stdin.setRawMode を使用するように警告したため、変更しました。
前に:
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);
後:
process.stdin.setRawMode(true);
process.stdin.on("keypress", function(chunk, key) {
if(key && key.name === "c" && key.ctrl) {
console.log("bye bye");
process.exit();
}
});
いずれにせよ、何もしない完全に無反応なノードプロセスを作成するだけです。最初は について文句を言いtty
、次にエラーをスローし、2番目は何もせずにNodeのネイティブCTRL+ハンドラを無効にするので、押してもノードを終了しません。で+をC正常に処理するにはどうすればよいですか?CtrlCウィンドウズ?
ベストアンサー1
割り込み信号をキャッチしようとしている場合SIGINT
、キーボードから読み取る必要はありません。process
のオブジェクトはnodejs
割り込みイベントを公開します。
process.on('SIGINT', function() {
console.log("Caught interrupt signal");
if (i_should_exit)
process.exit();
});
編集: 回避策なしでは Windows では動作しません。こちらをご覧ください