看板 PttCurrent 關於我們 聯絡資訊
※ 引述《CCHptt (CCH)》之銘言: : 如果一個使用者的 連線逾時 或 使用者直接將BBS瀏覽程式關閉, 在BBS伺服器中提供該 : 使用者服務的 process 是如何結束的? 是收到 termination signal 嗎? 連線逾時 : PTT 我看不出來, 因為也沒有 "永久掛站" 的權限 @@ 而 Maple 則是直接呼叫 abort_bbs() 而使用者直接將BBS瀏覽程式關閉則是送出 SIGTERM 給系統 如果是使用者直接關機的話, 則不會送出 SIGTERM 給系統 : 如果答案是 "是" 的話, 我可以先保存原來的 signal handler, 註冊自己的 signal : handler, 處理完之後再恢復原來的 signal handler, 最後再送 SIG_TERM 給自己嗎? SIG_TERM (Terminate): 是程式中斷時發送給系統的訊號, 而非系統發出的訊號 而 PTT 系統則是偵測 SIGHUP/SIGTERM/SIGPIPE 三種訊號時, 會呼叫 abort_bbs() SIGHUP (Hangup): terminal hangup detect or death of controlling process ex. kill -HUP pid 不過現在的 deamon 都慣用 SIGHUP(1) 來告訴自己重新 reload 設定 SIGPIPE (Pipe): 當程式寫入 no reader 的 socket 或 fifo, 此動作則會產生 SIGPIPE訊號 (常見錯誤訊息為 Broken pipe) ※ 引述《in2 (敬請期待 :P)》之銘言: : 我以為應該是 read(socket) 的時候拿到 -1 @_@ -1 應該是 select 逾時的情況, 何時逾時則是端看 vio_to 設定 (io.c:add_io()) 且 (errno != EINTR) 的條件同時成立時, 才會 abort_bbs() -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.67.4.232
uiLtreblA:應該是 abort_bbs() 12/19 16:36
VictorHsieh:ptt 連線逾時是用外部程式做的 (kill SIGTERM) 12/20 00:02
TKyo:對, 是 abort_bbs, 很順地一連串 cp 下來 @@ 12/20 02:29
※ 編輯: TKyo 來自: 61.67.4.232 (12/20 02:30)