gpt4 book ai didi

node.js - Control-C 未被 Node.js 捕获

转载 作者:搜寻专家 更新时间:2023-11-01 00:27:43 25 4
gpt4 key购买 nike

我想如果我运行它然后按 control-C,程序应该在显示“正在退出...”后退出。它不是。当然,我想在实际应用程序中做的不仅仅是 console.log。

process.on('SIGINT', function() {
console.log("Exiting...");
process.exit();
});
while(1);

它会捕获但不会退出。我必须单独终止进程。

Node 版本 8.x LTS

编辑:编辑是为了让我的评论之一变得清晰。正如在接受的答案中明确指出的那样,我的信号处理程序正在覆盖默认的信号处理程序,但它从未被执行过。 Cntl-C 没有终止进程这一事实给我的印象是信号处理程序实际上正在执行。它只是覆盖了内置处理程序。答案真正信息丰富 - 仅用几句话就包含了信息。

最佳答案

while(1) 卡在进程上。将其更改为:

setInterval(() => {}, 1000);

它的行为如您所愿。

我假设您使用 while(1) 作为正在运行的程序的占位符,但这不是准确的表示。一个普通的 Node 应用程序不会像那样同步地保持进程。

可能值得注意的是,当您执行 process.on('SIGINT', ... 时,您正在抢占 Node 的正常 SIGINT 处理程序,即使在 while(1) 持有进程。通过添加您自己的处理程序,您的代码将在 Node 到达它时运行,这将在当前同步事件周期之后,在这种情况下永远不会发生。

关于node.js - Control-C 未被 Node.js 捕获,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53133934/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com