知识点归纳
信号和信号处理;
信号和中断的统一处理
将信号视为进程中断,将进程从正常执行转移到信号处理
信号的来源,包 括来自硬件、异常和其他进程的信号
信号在Unix/Linux中的常见用法
Unix/Linux中的信号处理
信号类型
信号向量位
信号掩码位
进程 PROC结构体中的信号处理程序
信号处理步骤
Unix/Linux支持31种不同的信号,每种信号在signal.h文件中都有定义。
#define SIGHUP 1
#define SIGINT 2
#define SIGQUIT 3
#define SIGILL 4
#define SIGTRAP 5
#define SIGABRT 6
#define SIGIOT 6
#define SIGBUS 7
#define SIGFPE 8
#define SIGKILL 9
#define SIGUSR1 10
#define SIGSEGV 11
#define SIGUSR2 12
#define SIGPIPE 13
#define SIGALRM 14
#define SIGTERM 15
#define SIGSTKFLT 16
#define SIGCHLD 17
#define SIGCONT 18
#define SIGSTOP 19
#define SIGTSTP 20
#dpfine STGTTTN 21
#define SIGTTOU 22
#define SIGURG 23
#define SIGXCPU 24
#define SIGXFSZ 25
#define SIGVTALRM 26
#define SIGPROF 27
#define SIGWINCH 28
#define SIGPOLL 29
#define SIGPWR 30
#define SIGSYS 31
问题与解决思路
这应该和信号处理的具体实现有关,其数据结构是位图,而不是链表或者数组
当一个信号产生时,对应的位就会翻转成1,信号处理后,该位翻转回0
也就是说,如果在信号处理期间,多次Ctrl+c,只是多次让该信号对应的位变成1,其效果和一次Ctrl+c的效果一样
实践内容
signal函数
1 #include <stdio.h>
2 #include <signal.h>
3 void sig_catch(int signo){
4 printf("catch you : %d\n",signo);
5 return ;
6 }
7
8 int main(){
9 signal(SIGINT,sig_catch);
10 while(1);
11 return 0;
12 }
标签:信号处理,学习心得,catch,Unix,信号,第六章,signal,define
From: https://www.cnblogs.com/zhou-huilin/p/16841387.html