我是靠谱客的博主 虚幻老师,最近开发中收集的这篇文章主要介绍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 signal函数所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

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

评论列表共有 0 条评论

立即
投稿
返回
顶部