我的代码:
process.on('SIGINT', function() {
console.log('Interrupted');
process.exit();
});
// A big loop here that takes several seconds to execute through.
console.log('Exited without interruption');
我从命令行运行程序,当它仍在运行时,按 ctrl + C 。我立即返回命令行。但是,console.log('Interrupted')
不会显示在输出中。经过一段时间后,显示console.log('Exited without interruption')
,证明当我点击 ctrl + C 时进程没有退出,而是继续在后台运行我被送回了命令行。
删除process.on()
语句允许进程在按下 ctrl + C 时退出。 (否#39;不中断退出'输出。)
尝试了同样结果的() => {
和function() {
函数声明样式。
Mods,请不要太匆忙将此标记为副本,尽管当然,我很高兴被引用到现有的解决方案中。我已经看过Can't stop local node server with Ctrl + C (Mac) - 响应 ctrl + C 的行为是不同的。
答案 0 :(得分:1)
// Begin reading from stdin so the process does not exit imidiately
process.stdin.resume();
process.on('SIGINT', function() {
console.log('Interrupted');
process.exit();
});
https://nodejs.org/api/process.html#process_signal_events
编辑:
//这里需要几秒钟才能执行。
这是你的问题。 NodeJS是单踏板。当您执行同步循环时,您会阻止事件循环,而其他事件侦听器无法同时工作。
你可以: