我是靠谱客的博主 虚幻老师,这篇文章主要介绍Linux signal函数,现在分享给大家,希望可以做个参考。

#include <stdio.h>      // need for printf
#include <signal.h>     //need for signal
#include <unistd.h>     //need for sleep

/*
signal(参数1, 参数2)

参数1:要进行处理的信号。系统的信号 终端键入 kill -l查看(共64个)。
       9号SIGKILL信号不能被捕捉, 这些信号是系统定义的宏。
       
参数2:处理方式(忽略、默认处理动作、捕获)。

信号的处理方式一般有三种:

(1)忽略此信号(SIG_IGN)

(2)执行该信号的默认处理动作(SIG_DFL),不写此处理函数默认也是执行系统默认操作.

(3)提供一个信号处理函数,要求内核在处理该信号时切换到用户态执行这个处理函数,这种方式称为捕捉(catch)一个信号.

1) SIGHUP       2) SIGINT       3) SIGQUIT      4) SIGILL       5) SIGTRAP
6) SIGABRT      7) SIGBUS       8) SIGFPE       9) SIGKILL      10) SIGUSR1
11) SIGSEGV     12) SIGUSR2     13) SIGPIPE     14) SIGALRM     15) SIGTERM
16) SIGSTKFLT   17) SIGCHLD     18) SIGCONT     19) SIGSTOP     20) SIGTSTP
21) SIGTTIN     22) SIGTTOU     23) SIGURG      24) SIGXCPU     25) SIGXFSZ
26) SIGVTALRM   27) SIGPROF     28) SIGWINCH    29) SIGIO       30) SIGPWR
31) SIGSYS      34) SIGRTMIN    35) SIGRTMIN+1  36) SIGRTMIN+2  37) SIGRTMIN+3
38) SIGRTMIN+4  39) SIGRTMIN+5  40) SIGRTMIN+6  41) SIGRTMIN+7  42) SIGRTMIN+8
43) SIGRTMIN+9  44) SIGRTMIN+10 45) SIGRTMIN+11 46) SIGRTMIN+12 47) SIGRTMIN+13
48) SIGRTMIN+14 49) SIGRTMIN+15 50) SIGRTMAX-14 51) SIGRTMAX-13 52) SIGRTMAX-12
53) SIGRTMAX-11 54) SIGRTMAX-10 55) SIGRTMAX-9  56) SIGRTMAX-8  57) SIGRTMAX-7
58) SIGRTMAX-6  59) SIGRTMAX-5  60) SIGRTMAX-4  61) SIGRTMAX-3  62) SIGRTMAX-2
63) SIGRTMAX-1  64) SIGRTMAX
*/


/**
 * @fn       void handler(int signo)
 * @brief    自定义的信号处理函数
 * 
 * @param[in]          int signo  
 * @return         
 */
void handler(int signo) 
{
    printf("catch a signal:%d n", signo);
}

int main() 
{
//    signal(2, SIG_IGN);
//    signal(2, SIG_DFL);
    signal(2, handler);

    int i = 0;
    while(1) {
        sleep(2);
        i++;
        printf("signal test, i:%d n",i);
    }

    return 0;
}
 

最后

以上就是虚幻老师最近收集整理的关于Linux signal函数的全部内容,更多相关Linux内容请搜索靠谱客的其他文章。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(80)

评论列表共有 0 条评论

立即
投稿
返回
顶部