Javascript 为什么SIGTERM事件处理程序不是';我的代码示例中没有调用?
Windows 10 x64Javascript 为什么SIGTERM事件处理程序不是';我的代码示例中没有调用?,javascript,node.js,sigint,sigterm,Javascript,Node.js,Sigint,Sigterm,Windows 10 x64 节点v12.19.0 为什么在第一次打开SIGTERM事件后没有调用我的处理程序http://localhost:3000/在浏览器中?应用程序在没有执行我的处理程序的情况下被终止(我看不到它的控制台输出) 我的控制台输出(PowerShell): 在Windows 10上,process.On('SIGINT',cb)对我来说很有用,可以捕捉shell中的CTRL+C之类的中断,或者IDE中的stop按钮命令 它在Linux上的生产环境中也能很好地工作,特别是对于
节点v12.19.0 为什么在第一次打开
SIGTERM
事件后没有调用我的处理程序http://localhost:3000/在浏览器中?应用程序在没有执行我的处理程序的情况下被终止(我看不到它的控制台输出)
我的控制台输出(PowerShell):
在Windows 10上,
process.On('SIGINT',cb)
对我来说很有用,可以捕捉shell中的CTRL+C之类的中断,或者IDE中的stop按钮命令
它在Linux上的生产环境中也能很好地工作,特别是对于
pm2 restart
和类似的命令。如:“'SIGTERM'在Windows上不受支持,可以监听。”@msbit谢谢。在Windows上,我应该听什么事件而不是SIGTERM?不幸的是,Windows下似乎没有此类事件;来自同一链接:“Windows不支持信号,因此不等同于通过信号终止,但Node.js提供了一些process.kill()和subprocess.kill()的仿真:”@msbit谢谢。然后我将在带有节点的linux docker容器中使用它。但是如果我打开URL,它就不起作用了。
// node v12.19.0
const http = require("http");
const server = http.createServer((req,res)=> {
res.statusCode = 200;
res.end("Hello, World!");
setTimeout(() => { process.kill(process.pid, "SIGTERM"); } , 2000);
});
process.on("SIGTERM", () => { // Why it will not be executed?
process.statusCode = 1;
console.log("SIGTERM");
server.close(() => {
console.log("Process terminated.");
});
});
server.listen(3000,()=>{
console.log("Server works on http://localhost:3000/");
});
PS C:\tmp_src> node index.js
Server works on http://localhost:3000/
PS C:\tmp_src>