Linux:信号

目录

一、认识信号

二、信号的产生

1.命令行kill

2.键盘产生信号

3.系统调用

4.软件条件

5.发生异常

三、信号的保存

三张表

sigset_t

四、信号的处理


一、认识信号

        信号,顾名思义,是Linux操作系统提供给用户用来给其他进程发送异步信息的一种方式。

        在时间线上,信号历程分别是信号的产生、进程保存信号、进程处理信号,我们从这三个方面理解信号。

  • 常见信号

        执行命令kill -l

kill -l

        

        没有0、32、33信号,其中从34号信号开始,均为SIGRT*,这一类为实时信号,要求进程实时响应,但现代操作系统普遍是分时操作系统,因此34-64信号对学习意义不大。

        此外,信号的名称本质是宏定义。

  • 进程处理信号的方式

        三种。

        1.该信号的默认处理方式,比如发送2号信号就是终止进程,9号信号就是强制杀死信号。

        2.捕捉信号,然后自定义处理,需要用到signal系统调用。

        3.进程忽略掉了这个信号。

二、信号的产生

1.命令行kill

        在命令行使用kill命令指定某一个进程,发送特定信号。命令行kill本质上也是一个可执行程序,内部封装了系统调用kill。

//向PID为1688的进程发送9号信号
kill -9 1688

2.键盘产生信号

        键盘组合键,ctrl+c对应(2)SIGINT、ctrl+\对应(3)SIGQUIT、等等,这些组合键在键盘按下后,通过硬件中断技术,被CPU获取到,然后被解析为命令发送给操作系统,被操作系统识别后发送对应信号给前台进程。

3.系统调用

        和信号相关的系统调用。

        kill:对任意进程发送任意信号。

KILL(2)                                                      Linux Programmer's Manual                                                     KILL(2)

NAME
       kill - send signal to a process

SYNOPSIS
       #include <sys/types.h>
       #include <signal.h>

       int kill(pid_t pid, int sig);

 

   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值