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