Node.js で CTRL+C を検出する 質問する

Node.js で CTRL+C を検出する 質問する

このコードは別の 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 では動作しません。こちらをご覧ください

おすすめ記事