常见信号
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/acf05bc959293a77fb818c86747e5dd3.png)
信号的来源
信号的来源
1.硬件异常:除0、无效内存访问等。
这些异常通常被硬件(驱动)检测到,并通知系统内核。
系统内核再向引发这些异常的进程递送相应的信号。
2. 软件异常:通过kill/raise/alarm/setitimer/sigqueue函数产生的信号。
signal
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8e78b24d5a51e8e21d9fffd488f60917.png)
#include <stdio.h>
#include <unistd.h>
#include <signal.h>
void sigtstp_proc(int sig){
printf("%d进程接收到一个信号:%d\n",getpid(),sig);
signal(sig,sigtstp_proc);
}
void sig_proc(int sig){
printf("%d进程接收到一个信号:%d\n",getpid(),sig);
}
int main(){
printf("进程:%d\n",getpid());
if(signal(SIGINT,SIG_IGN)==SIG_ERR){
perror("singal");
return -1;
}
if(signal(SIGQUIT,SIG_DFL)==SIG_ERR){
perror("signal");
return -1;
}