• 显示信号描述


    【摘自《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
    ", strsignal(SIGPIPE));
     8 
     9     psignal(SIGPIPE, "SIGPIPE description is");
    10 }

    输出:

    SIGPIPE description is : Broken pipe
    SIGPIPE description is: Broken pipe
  • 相关阅读:
    细说:Http协议 篇
    连接池
    实践
    事务
    一、Jdbc 入门
    ES6之路第一篇:let、const
    vue2饿了吗之路第二篇:登录
    RabbitMQ(三)——简单模式
    RabbitMQ(二)——模式类型
    RabbitMQ(一)——简介
  • 原文地址:https://www.cnblogs.com/jingyg/p/5181433.html
Copyright © 2020-2023  润新知