我正在开发一个应用程序,我希望它可以根据需要将一些运行时统计信息打印到控制台。kill
我立刻想到了信号。
阅读Wiki上的Unix信号SIGINFO
似乎是一种可行的方法,因为:
- 它旨在为这些目的
- 如果未实现信号处理程序,则不终止进程(与
SIGUSRx
- 相反,请参见此处)
但是,通过检查的输出kill -l
,看来我的服务器没有实现此信号。
我的问题是:
- 为什么
SIGINFO
我的系统不见了?所有GNU Linux系统上都不存在吗? - 是否有一种简单的方法(即没有内核/ glibc重新编译)来启用此信号?如果没有,那么困难的方法是什么?
- 我可以为目标使用什么替代信号,如果目标过程未处理,则不会产生任何副作用?(由于我在glibc的手册上找不到任何其他合适的信号,因此我已经假设没有)
Linux metainfo:
Linux whatever 3.18.2-2-ARCH #1 SMP PREEMPT Fri Jan 9 07:37:51 CET 2015 x86_64 GNU/Linux
更新:我仍在寻找有关为何有条件将此信号从BSD以外的其他系统中排除的更多信息(请参阅下面的评论)。该信号似乎对许多目的都非常有用,因此我很难相信这只是个一时兴起的事情-那么该信号在Linux上的真正表现是什么呢?
dd
Mac上所描述的行为是错误的。^T
在dd
执行期间,Linux机器上没有任何作用-我将相应地更新问题。
^T
出现在输出中stty -a
?