Rob*_*ann 14 linux signals glibc
我正在开发一个应用程序,我希望它根据需要将一些运行时统计信息打印到控制台。kill我立刻想到了信号。
阅读Wiki 上的Unix 信号,SIGINFO似乎是要走的路,因为:
SIGUSRx- 请参阅此处相反)但是,通过检查 的输出kill -l,似乎我的服务器没有实现此信号。
SIGINFO我的系统上没有?它在所有 GNU Linux 系统上都不存在吗?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 的一个条目,导致内核将SIGINFO其交付给 的tty进程组) - 该部分很“简单” -但是当内核不处理信号时,让内核报告有关进程状态的信息(因为当时很少有东西对此有任何支持,该功能主要是关于“这个进程是旋转还是挂起”和“什么进程是无论如何”)更难 - ISTR 甚至存在关于准确显示该信息的安全/信任问题,以及它是否应该与安全注意密钥路径相关联。也就是说,仅发送信号的“简单”版本可能有一些价值......
(根据个人记忆;快速的网络搜索不会发现任何明显的内容,但我认为人们必须深入挖掘非常古老的档案才能找到讨论。)