0基础学会 信号知识

目录

1、信号共性:

2、信号的特质:

3、信号相关的概念:

4、信号四要素:

5、Linux 常用信号一览表:

6、默认动作:

7、硬件异常产生信号:

1、信号共性:

简单、不能携带大量信息,满足条件才发送;

2、信号的特质:

信号是软件层面上的“中断”,一旦信号产生,无论程序执行到什么位置,必须立即停止运行,处理结束,再继续执行后续指令。

每个进程收到的所有信号,都是由内核负责发送的,内核处理;

3、信号相关的概念:

产生信号:

1)按键产生

2)系统调用产生

3)软件条件产生

4)硬件异常产生

5)命令产生

概念:

未决:产生与递达之间的状态

递达:产生并且送达到进程。直接被内核处理掉

信号产生方式:执行默认处理动作,忽略、捕捉

阻塞信号集(信号屏蔽字):本质,位图,用来记录信号的屏蔽的状态

未决信号集:本质,位图,用来记录信号的处理状态。该信号集中的信号,表示已经产生,但尚未被处理。

4、信号四要素:

信号使用前,应先确定其4要素,然后再用!!!

信号编号、信号名称、信号对应事件、信号默认处理动作

5、Linux 常用信号一览表:

1)SIGHUP:当用户退出shell时,默认动作为终止进程,相当于直接关闭中断。

2)SIGINT:当用户按下<ctrl+c>时会产生此信号,默认动作为终止进程。

3)SIGQUIT:当用户按下<ctrl+>时产生该信号,默认为终止进程。

4)SIGILL:CPU检测到某进程执行了非法指令,默认动作为终止进程并产生了core文件

7)SIGBUS:非法访问内存地址,默认动作为终止进程

9)SIGKILL:无条件终止进程。默认动作为终止,它向系统管理员提供了可以杀死任何进程的方法。

19)SIGSTOP:停止进程的执行。默认动作为暂定进程。

10)SIGUSR1:用户定义的信号,程序员可以在程序中定义并使用该信号,默认为终止。

12)SIGUSR2:另外一个用户自定义信号,程序员可以在程序中定义并使用该信号,默认为终止。

11)SIGSEGV:指示进程进行了无效内存的访问。默认为终止进程并产生core文件

15)SIGTERM:程序结束信号,与SIGKILL不同的是,该信号可以被阻塞和终止,通常用来表示程序正常退出,执行shell命令kill时,缺省产生这个信号,默认为终止

17)SIGCHLD:子进程状态发生变化时,父进程会收到这个信号,默认为忽略这个信号;

13)SIGPIPE:Broken pipe向一个没有读端的管道写数据,默认终止进程

14)SIGALRM:定时器超时,超时的时间 由系统用alarm设置,默认为终止

6、默认动作:

(1)Term:终止进程

(2)Ign:忽略信号

(3)Core:终止进程,生成Core文件

#include <stdio.h>
#include <string.h>
int main()
{
    char *buf;
    strcpy(buf,"hello");
    return 0;

}

 

 段错误,核心已转储,因为上面 char *buf;出现了野指针,并没有出现定义到内存具体位置。

(4)Stop:停止(暂停)进程

(5)Cont:继续运行进程

7、硬件异常产生信号:

除0操作:8)SIGFPE(浮点数例外) “F”-float 浮点数

非法访问内存 :11)SIGSEGV(段错误)

总线错误 :7)SIGBUS

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值