如何从信号编号中获取人类可读的描述?

时间:2009-11-12 02:16:52

标签: c string posix signals

POSIX标准或其他C标准是否提供了一种从信号编号中恢复有意义信息的方法,就像strerror()可以从errno恢复信息一样? Gnu C库有strsignal(),但如果可能的话,我想要一些可移植到BSD和其他Unix变种的东西。

2 个答案:

答案 0 :(得分:10)

是的,有趣的是,有一种标准方法可以从POSIX中的信号中获取字符串消息。巧合的是,strsignal()。从POSIX.1-2008开始:

  

strsignal()函数应将signum中的信号编号映射到实现定义的字符串,并返回指向它的指针。它应使用与psignal()函数相同的消息集。

不提供此功能的环境不符合POSIX标准。虽然相对较新(2008年问题7出现),但我在Mac OS X上有strsignal()的手册页,所以这是一个好兆头。

答案 1 :(得分:2)

外部定义的数组sys_siglist包含每个信号编号的信号描述,是BSD的标准问题。

#include <signal.h>

extern const char *const sys_siglist[];