【问题标题】:Does catching SIGINT in NodeJS prevent default behaviour of Ctrl + C?在 NodeJS 中捕获 SIGINT 会阻止 Ctrl + C 的默认行为吗?
【发布时间】:2020-05-13 15:31:08
【问题描述】:

我在 Windows 上运行的 nodejs 应用程序打印 ^C 并在我按下 Ctrl + C 时返回 cmd 提示符。但是当我在代码中使用以下 SIGINT 处理程序时:

process.on('SIGINT', (code) => {
console.log("Process exited due to Ctrl + C with code: " + code);

});

console.log() 中的语句被打印,但进程没有退出。不返回 cmd 提示符。多次按 Ctrl + C 会一次又一次地打印相同的语句,但不会返回 cmd 提示符。然后我必须通过关闭 shell 来终止进程。处理 SIGINT 会改变 Ctrl + C 的默认行为吗?

【问题讨论】:

    标签: javascript node.js process sigint


    【解决方案1】:

    这种行为是in the docs

    'SIGTERM' 和 'SIGINT' 在非 Windows 平台上具有默认处理程序 在使用代码 128 + 信号退出之前重置终端模式 数字。如果这些信号之一安装了侦听器,则其默认值 行为将被删除(Node.js 将不再退出)。

    如果您希望它仍然退出,请使用process.exit(0)

    【讨论】:

      猜你喜欢
      • 2011-11-22
      • 2013-07-25
      • 1970-01-01
      • 2013-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 2021-12-31
      相关资源
      最近更新 更多