Signals

攔截系統信號作為防止kill call生效的策略

  • December 20, 2021

作為這個問題的後續行動,我是正確的,(4)(下面的引用)是我能得到的最遠距離?

在我的應用程序(一個作為 systemd 守護程序執行的 .NET 應用程序)中,攔截在執行 kill(可能呼叫 sigaction)時發送到程序的核心信號,以便忽略 kill 請求。

並且免責聲明僅適用於使用者呼叫kill省略信號號或使用可擷取信號(如 default SIGTERM)的情況。如果使用者使用(-9) 或任何其他不可擷取的信號

呼叫 kill - 這也將失敗。SIGKILL

上面的假設準確嗎?

是的,這很正常。許多程序擷取並處理自己的信號。例如,常見的情況是:

  • 擷取 SIGTERM、SIGINT 和/或 SIGQUIT,然後刷新並關閉所有打開的文件,否則會優雅地清理和關閉,而不是死掉。
  • 擷取 SIGHUP 並重新載入配置文件,和/或關閉並重新打開所有日誌文件。或者只是像對待 SIGTERM 一樣對待 SIGHUP。
  • 根據需要擷取並處理其他可擷取的信號——這就是它們的用途,畢竟……讓其他程序向正在執行的程序發送信號。根據程序員的要求,由信號接收程序來處理它們或忽略它們(如果未處理,可能會產生預設結果,例如為 SIGTERM 被殺死)。

引用自:https://unix.stackexchange.com/questions/683151