Linux
缺少 GNU Linux(Arch Linux)上的 SIGINFO
我正在開發一個應用程序,我希望它按需將一些執行時統計資訊列印到控制台。
kill
和信號立即出現在我的腦海中。閱讀Wiki 上的Unix 信號
SIGINFO
似乎是可行的方法,因為:
- 它旨在用於這些目的
- 如果未實現信號處理程序,則不會終止程序(與
SIGUSRx
- 參見此處)但是,通過檢查 的輸出
kill -l
,我的伺服器似乎沒有實現此信號。我的問題是:
- 為什麼
SIGINFO
我的系統上缺少?它在所有 GNU Linux 系統上都沒有嗎?- 是否有一種簡單的(即沒有核心/glibc 重新編譯)方法來啟用這個信號?如果沒有,那麼困難的方法是什麼?
- 如果不由目標程序處理,我可以使用哪些替代信號來達到我的目的,並且不會導致任何副作用?(我已經假設沒有,因為我在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 info
control-T 的條目,導致核心傳遞SIGINFO
給tty
’ 的程序組)-這部分是“簡單的”-但是讓核心在它不處理信號時報告有關程序狀態的資訊(因為當時很少有東西對此有任何支持,該功能主要是關於“這個程序是旋轉還是掛起”和“什麼程序是無論如何”)更難 - ISTR 甚至存在關於準確顯示該資訊的安全/信任問題,以及它是否應該與安全注意密鑰路徑相關聯。也就是說,僅發送信號的“簡單”版本可能有一些價值……(根據個人記憶;快速的網路搜尋並沒有發現任何明顯的東西,但我認為必須深入探勘真正古老的檔案才能找到討論。)