gpt4 book ai didi

node.js - 监听终端 session "close"事件

转载 作者:行者123 更新时间:2023-12-04 01:31:09 24 4
gpt4 key购买 nike

在终端中,我启动了一个后台进程 A,后者又启动了一个进程 B。进程 B 写入终端(进程 A 已将正确的 TTY 文件描述符传递给 B)。

我害怕的是,如果用户(在某些情况下,我)在没有向进程 A 或 B 发送 SIGINT 的情况下关闭终端窗口。可能发生的情况是进程 B 仍会尝试写入终端,即使它已被用户关闭。更糟糕的是,用户可以打开一个新的终端窗口,它可能会假设另一个终端具有相同的身份/文件描述符,然后被进程 B 写入。

基本上,我正在寻找一种方法来“监听”终端 session 事件,比如终端 session 被关闭。

是否可以在 Node.js 进程中监听此类事件?也许有一个类似 process.on('SIGINT') 的对应处理程序?

我猜也许是 SIGTERM event 是要监听的事件,但是现在在尝试了代码之后,不要以为就是这样。

最佳答案

你应该找 SIGHUP (另见 all possible signals):

var http = require('http');
var fs = require('fs');

var server = http.createServer(function (req, res) {
setTimeout(function () { //simulate a long request
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}, 4000);
}).listen(9090, function (err) {
console.log('listening http://localhost:9090/');
console.log('pid is ' + process.pid);
});

process.on('SIGHUP', function () {
fs.writeFileSync(`${process.env.PWD}/sighup.txt`, `It happened at ${new Date().toJSON()}`);
server.close(function () {
process.exit(0);
});
});

关于node.js - 监听终端 session "close"事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40623873/

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