显示信号描述
【摘自《Linux/Unix系统编程手册》】
每个信号都有一串与之相关的可打印说明。这些描述位于数组 sys_siglist 中。例如,可以用 sys_siglist[SIGPIPE] 来获取 SIGPIPE 信号(管道断开)的描述。然而,较之于直接饮用 sys_siglist 数组,还是推荐使用 strsignal() 函数。
#define _BSD_SOURCE #include <signal.h> extern const char* const sys_siglist[]; #define _GNU_SOURCE #include <string.h> char* strsignal(int sig);
strsignal() 函数对 sig 参数进行边界检查,然后返回一枚指针,指向针对该信号的可打印描述字符串,或者是当信号编号无效时指向错误字符串。(在其他一些UNIX实现中,strsignal() 函数会在 sig 无效时返回空值)
除去边界检查之外,strsignal() 函数较之于直接引用 sys_siglist 数组的另一优势是对本地(local)设置敏感,所以显示信号描述时会使用本地语言。
psignal() 函数(在标准错误设备上)所示为 msg 参数所给定的字符串,后面跟一个冒号,随后是对应于 sig 的信号描述。和 strsignal() 一样,psignal() 函数也对本地设置敏感。
#include <signal.h> void psignal(int sig, const char* msg);
示例:
1 #define _GNU_SOURCE 2 #include <stdio.h> 3 #include <signal.h> 4 5 int main(int argc, char* argv[]) 6 { 7 printf("SIGPIPE description is : %s\n", strsignal(SIGPIPE)); 8 9 psignal(SIGPIPE, "SIGPIPE description is"); 10 }
输出:
SIGPIPE description is : Broken pipe SIGPIPE description is: Broken pipe