簡體   English   中英

聽終端會話“關閉”事件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM