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

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

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

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

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

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

 #include  extern const char *const sys_siglist[];