概述
#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函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复