Linux信号1

一、信号基本概念。

       信号简单的来说它就是以中国通知机制,它是为了响应某个事件而产生的,接收到相关信号的进程就会去执行对应的动作。接收到信号的进程会先在自己的PCB中记下相关信息,等到合适的时候去处理这个信号。

可以使用kill -l命令查看当前系统定义的信号列表:

二、信号产生的条件

1.用户在终端按下某些键时,终端驱动程序会发送信号给前台进程。

2.硬件异常产生信号,由硬件通知内核,然后内核向当前进程发送适当的信号。

3.一个进程调用kill函数可以给另一个进程发送信号。

三、处理信号的动作

1.忽略此信号。

2.执行该信号的默认处理动作。

3.提供一个信号处理函数,这个函数是由用户提供的,让进程执行自己指定的函数动作。这种方式称为捕捉一个信号。

四、产生信号

1.通过终端按键产生信号

我们先来解释一下关于核心转储的问题:Core Dunp,是当一个进程要异常中止时,可以选择把进程的用户空间内存数据全部保存到磁盘上。

使用ulimit -a查看当前core文件大小:

可以使用ulimit -c 10240设置core文件大小:

一般core文件大小默认是0,因为为了保护用户隐私安全同时也为了内存考虑,防止占用过多空间。

再来认识一下signal函数:

这个函数是为了捕捉一个信号,第一个参数是指的是捕捉的哪个信号,第二个参数是捕捉到信号后,进程需要去执行的动作,是个函数指针类型。

一下程序捕捉到的分别是2号和8号信号:

2.调用系统函数向进程发信号

kill命令是通过调用Kill函数实现的。kill函数可以给指定的进程发送一个信号,raise函数可以是当前进程自己给自己发送一个信号,abort函数使当前进程接收到信号而终止。

用kill函数写一个mykill程序,如下所示:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值