Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么SIGTERM事件处理程序不是';我的代码示例中没有调用?_Javascript_Node.js_Sigint_Sigterm - Fatal编程技术网

Javascript 为什么SIGTERM事件处理程序不是';我的代码示例中没有调用?

Javascript 为什么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上的生产环境中也能很好地工作,特别是对于

Windows 10 x64
节点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>