zoukankan      html  css  js  c++  java
  • linux信号处理

    #ifndef __SIGNAL_COMMON_H
    #define __SIGNAL_COMMON_H
    
    #include <string.h>
    
    
    
    #define        NGX_OK        0
    #define        NGX_ERROR    -1
    #define        NGX_AGAIN    -2
    #define        NGX_BUSY    -3
    #define        NGX_DONE    -4
    #define        NGX_DECLINED    -5
    #define        NGX_ABORT    -6
    
    
    #define     ngx_memset_zero(buf, n)    memset(buf, 0, n)
    
    #endif
    #ifndef __SIG_PROCESS_H
    #define __SIG_PROCESS_H
    
    
    #define SIGNAL_INT    SIGINT
    
    
    #define SIGNAL_MAP(xxx)
        xxx(SIGNAL_INT, signal_handler)
        xxx(0, NULL)
    
    #define MAP_GEN(h, n)    {h, #h, n},
    
    #endif
    #include <signal.h>
    #include <stdio.h>
    #include "signal_process.h"
    #include "signal_common.h"
    
    
    typedef struct{
        int    signo;
        char    *signame;
        void    (*handler)(int signo);
    }signal_t;
    
    static void signal_handler(int signo);
    
    signal_t signals[]={SIGNAL_MAP(MAP_GEN)};
    
    
    static void signal_handler(int signo)
    {
        #if __DEBUG__
        printf("signal_handler: [%d]
    ", signo);
        #endif
        
        switch(signo)
        {
            case SIGINT:
            break;
            case SIGHUP:
            break;
            case SIGCHLD:
            break;
        }
    
        return;
    }
    
    int signal_init()
    {
        signal_t     *sig;
        struct sigaction  sa;
        for(sig=signals; sig->signo != 0; sig++)
        {
            ngx_memset_zero(&sa, sizeof(struct sigaction));
            sa.sa_handler = sig->handler;
            sigemptyset(&sa.sa_mask);
            if(sigaction(sig->signo, &sa, NULL) == -1){
                return NGX_ERROR;
            }
    
        }
        return NGX_OK;
    }
    
    
    int main()
    {
        signal_init();
        while(1)
        {};
    }
  • 相关阅读:
    白钰铭的第九次作业
    白钰铭的第八次作业
    第七次作业
    白钰铭的第六次作业
    白钰铭的第五次作业
    白钰铭的第四次作业
    白钰铭的第三次作业
    十二次作业!
    十一!!!作业!!
    第九次作业!
  • 原文地址:https://www.cnblogs.com/unixshell/p/3528161.html
Copyright © 2011-2022 走看看