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;
}
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值