Linux

缺少 GNU Linux(Arch Linux)上的 SIGINFO

  • April 16, 2016

我正在開發一個應用程序,我希望它按需將一些執行時統計資訊列印到控制台。kill和信號立即出現在我的腦海中。

閱讀Wiki 上的Unix 信號SIGINFO似乎是可行的方法,因為:

  • 旨在用於這些目的
  • 如果未實現信號處理程序,則不會終止程序(與SIGUSRx- 參見此處

但是,通過檢查 的輸出kill -l,我的伺服器似乎沒有實現此信號。

我的問題是:

  1. 為什麼SIGINFO我的系統上缺少?它在所有 GNU Linux 系統上都沒有嗎?
  2. 是否有一種簡單的(即沒有核心/glibc 重新編譯)方法來啟用這個信號?如果沒有,那麼困難的方法是什麼?
  3. 如果不由目標程序處理,我可以使用哪些替代信號來達到我的目的,並且不會導致任何副作用?(我已經假設沒有,因為我在glibc的手冊上找不到任何其他合適的信號)

Linux元資訊:

Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux

**更新:**我仍在尋找更多資訊,說明為什麼這個信號有條件地從 BSD 以外的其他系統中排除(見下面的評論)。該信號似乎對許多用途都非常有用,所以我很難相信這只是一時興起的問題 - 那麼這個信號在 Linux 上可用的真正亮點是什麼?

有人談論(早在 linux 0.x-1.x 天)添加它(因為它在 BSD 系統上很有用)但如果我沒記錯的話,有一些原因在當時的 Linux 上比 BSD 更難做.

請注意,您要問的只是功能的一小部分(即,您正在談論stty infocontrol-T 的條目,導致核心傳遞SIGINFOtty’ 的程序組)-這部分是“簡單的”-但是讓核心在它處理信號時報告有關程序狀態的資訊(因為當時很少有東西對此有任何支持,該功能主要是關於“這個程序是旋轉還是掛起”和“什麼程序是無論如何”)更難 - ISTR 甚至存在關於準確顯示該資訊的安全/信任問題,以及它是否應該與安全注意密鑰路徑相關聯。也就是說,僅發送信號的“簡單”版本可能有一些價值……

(根據個人記憶;快速的網路搜尋並沒有發現任何明顯的東西,但我認為必須深入探勘真正古老的檔案才能找到討論。)

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