显示信号描述

【摘自《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

 

posted @ 2016-02-04 13:50  Kjing  阅读(612)  评论(0编辑  收藏  举报