Linux下的信号处理

本文介绍了Linux下信号处理的概念,强调信号的异步性和不可预知性。信号是进程间通信的一种方式,包括实时和非实时信号。通过`kill -l`可以查看所有信号。信号来源包括程序错误、外部事件等,而`SIGSTOP`和`SIGKILL`是无法被屏蔽的。文章还讨论了信号的处理方式,如忽略、默认动作和自定义回调函数,并提供了`signal`函数的使用示例。
摘要由CSDN通过智能技术生成

信号
程序在执行的时候,几乎任何时刻都会反生事件。
信号通常用来向一个进程通知事件。
信号是不可提前预知的,所以信号是异步的。
信号随时都可能发生,接收信号的进程也可以没有控制权。
每个信号名都以SIG开头,信号名的定义在<signal.h>中。
信号名一般都是宏,内部通常是一个正整数。
信号(signal)是一种软件中断,它提供了一种处理异步事件的方法,也是进程间惟一的异步通信方式。
通过命令 kill -l 可以查看到64个信号
在这里插入图片描述
而这些信号各自在什么条件下产生,默认的处理动作是什么,
在signal(7)中都有详细说明
man 7 signal
在这里插入图片描述
信号的值定义在signal.h中,在Linux中没有32和33这两个信号。
其中编号34以上的是实时信号,34以下的信号是普通信号。
可靠信号又称为实时信号
非可靠信号又称为非实时信号
在Linux系统中,信号的可靠性是指信号是否会丢失,或者说该信号是否支持排除。
SIGHUP( 1 ) ~ SIGSYS( 31 )之间的信号都是继承自UNIX系统是不可靠信号。
Linux系统根据POSIX标准定义了SIGRTMIN(34) ~ SIGRTMAX(64)之间的信号,它们都是可靠信号,也称为实时信号。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值