种类:使用kill -l(查看linux信号种类)---62种
非可靠信号/非实时信号: 1~31; 可靠信号/实时信号:34~64;
信号生命周期
产生->注册->注销->处理
产生
产生方式:
硬件中断ctrl +z(20)/c(2)/\(3)
软件中断:
int kill(pid_t pid,int sig)给指定进程发送指定信号
int raise(int sig);给自己发送指定信号
void abort(void); 给自己发送SIGABRT信号
unsigned int alarm(unsigned int s);s秒后发送SIGLRM给自己 定时器接口
注册
让进程知道自己收到了某个信号需要去处理,在PCB中有个未决信号集合(pending位图),每当操作系统向进程发送了一个信号,因为每个信号对应一个位图的位,就会将对应的位置为1,表示收到了这个信号,但是这样不能表示收到了几个这样相同的信号;于是操作系统还有一个sigqueue链表,每次产生一个信号,操作系统就会新建一个sigqueue节点放入这个链表中..
非可靠信号的注册:1~31号信号如果没有注册过则注册,已经注册则不会注册;
可靠信号的注册:34~64号信号,不管是否已经注册过,位图置一,向sigqueue链表中添加一个结点.