Linux下信号signal详解

什么是信号

信号又称软中断信号,是进程之间传递信息的一种方式,信号传递过程中不仅可以传递信息,还可以附加传递一些数据信息或其他内容.

信号的分类

信号按照可靠性可分为,可靠信号和不可靠信号
不可靠信号:信号传递过程中有可能丢失的信号为不可靠信号,在操作系统早期发展过程中,UNIX的信号都是不可靠信号,在后期发展过程中,Linux在不可靠信号的基础上发展出了可靠信号,但因版本兼容问题,不可靠信号也在一直沿用.
可靠信号:信号传输过程中不会丢失的信号.
信号按照时间关系还可分为实时信号和非实时信号
实时信号和非实时信号的区别同样是是否支持排列,简单来说,所有的可靠信号都是实时信号,所有的不可靠信号都是非实时信号.

信号查看及用法

在Linux命令行可以用kill -l列出当前版本操作系统注册的信号,不同版本的操作系统可能会列出不同的信号.

在程序中如何给指定进程发送信号
  1. int kill(pid_t pid,int sig);通过kill函数给指定进程发送特定信号,kill函数第一个参数为指定进程的pid,若第一个参数为0时,则表示给当前进程进程组所有进程发送信号,当pid为-1时,则表示给当前进程用户有权限的除1号进程外所有进程发送信号.第二个参数为要发送的信号.
  2. int raise(int sig);通过raise函数给当前进程发送一个sig信号.
在程序中如何指定信号的处理方式

在信号抵达时,操作系统提供了三种解决方式,第一种为默认按操作系统默认解决方案解决,第二种是屏蔽信号,不进行处理,第三种是用户自己指定解决方案.

  1. void(*signal(int sig,void (*handler)(int)))(int);
    给sig信号指定一个解决方案,第一个参数为信号常量,第二个参数为一个函数指针,指向要修改信号的解决方案
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值