zoukankan      html  css  js  c++  java
  • 5. sigaction 函数

    TOC

    程序异常退出大部分都是系统发出的信号导致的,程序收到某些信号退出时,会产生core文件,如段错误信号SIGSEGV;但是某些信号不会产生,core文件,程序收到此类信号默认退出,排查这类问题时,会抓不到方向。

    因此有必要对这类信号,进行捕获并记录日志。linux有一套处理信号的API。

    样例

    #include <signal.h>
    
    
    #define ARRAY_SIZE(arr) (sizeof((arr))/sizeof((arr[0])))
    
    
    /*
    信号说明:
    https://blog.csdn.net/wesleyluo/article/details/5279482
    */
    
    
    //根据需要增删捕获的信号
    static int s_arSignal[] = {SIGINT, SIGTSTP, SIGTERM, SIGPIPE, SIGALRM, SIGUSR1, SIGUSR2};
    
    
    void signal_handle(int signo)
    {
        LOG_PRINTF(LOG_LEVEL_ERROR, LOG_MODULE_SYS, "Handle signo:%d", signo);
    }
    
    
    
    
    int signal_capture(void)
    {
        int i = 0;
        struct sigaction act;
        act.sa_handler = signal_handle;//将信号处理动作设置为信号捕捉
        act.sa_flags = 0;  
        sigemptyset(&act.sa_mask);
    
    
        for(i = 0; i < ARRAY_SIZE(s_arSignal); ++i)
        {
            sigaction(s_arSignal[i], &act, NULL);
        }
    
    
        return 0;
    }
    
    
  • 相关阅读:
    mysql对表操作的各种语句
    Map遍历两种方式
    hibernate3
    Spring、mybaits整合
    mybaits注解
    mybaits 框架运用
    mybatis入门
    限制文本框字符数
    Unity3D Mathf函数
    Unity3d 粒子工具注释
  • 原文地址:https://www.cnblogs.com/standardzero/p/12552718.html
Copyright © 2011-2022 走看看