[英]Listen for terminal session “close” event
在終端中,我啟動后台進程A,后者又啟動進程B.進程B寫入終端(進程A已經向B傳遞了正確的TTY文件描述符)。
我擔心的是,如果用戶(在某些情況下,我)關閉終端窗口而不發送進程A或B一個SIGINT。 然后可能發生的是,即使用戶關閉了進程B,進程B仍將嘗試寫入終端。 更糟糕的是,用戶可以打開一個新的終端窗口,它可能會采用與另一個終端相同的身份/文件描述符,然后由進程B寫入。
基本上,我正在尋找一種“監聽”終端會話事件的方法,如終端會話被關閉。
是否可以在Node.js進程中偵聽此類事件? 也許有一個類似於process.on('SIGINT')
的相應處理程序?
我猜測也許SIGTERM
事件是要聽的事件,但現在在試驗代碼后,不要以為是這樣。
您應該尋找SIGHUP
(另請參閱所有可能的信號 ):
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);
});
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.