Bootstrap

Linux进程信号~详解

一.信号的概念

信号是进程之间事件异步通知的一种方式,属于软中断
告诉有这样一个信号,但是这个信号的具体处理方式以及什么时候处理由进程决定,所以是软中断。

二.信号的种类

kill —l

可以罗列出所有信号(总共定义了62个信号)
在这里插入图片描述
没有32,33号信号

  • 非实时信号(又称非可靠信号)
    特点:信号可能会丢失 1~31

  • 实时信号(又称可靠信号)
    特点:信号不会丢失 33~64

三.信号的产生

1.硬件产生

kill命令向进程发送信号kill -[信号值] [pid]

  • ctrl +c :2号信号 SIGINT
    键盘按下ctrl +c 结束一个进程的时候,其实是进程收到了2号信号。2号信号导致进程的退出
  • ctrl +z:20号信号SIGTSTP
    在这里插入图片描述在这里插入图片描述
    使用ctrl +z会使一个程序进入暂停状态T;
  • ctrl +|
    在这里插入图片描述

2.软件产生

  • kill函数int kill(pid_t pid,int sig);
    pid:进程号,要给哪个进程发送信号,则填写哪个进程的进程号
    sig:要发送信号的值
    在这里插入图片描述

  • raiseint raise(int sig);
    谁调用则给谁发送信号。该函数的实现也是调用kill函数

int raise(int sig){
   
	return kill(gitpid(),sig);
}

在这里插入图片描述

3.扩展:崩溃程序收到的信号

    悦读

    道可道,非常道;名可名,非常名。 无名,天地之始,有名,万物之母。 故常无欲,以观其妙,常有欲,以观其徼。 此两者,同出而异名,同谓之玄,玄之又玄,众妙之门。

    ;