Linux环境编程 day04 中断、信号、计时器
中断
1、中断的概念
暂停当前执行的任务,转而执行其它任务,待完成后再返回继续执行当前任务。
硬件中断:来自硬件设备的中断
软件中断:来自其它程序的中断
2、信号是一种软件中断,信号提供一种异步执行任务的机制。
3、常见的信号
SIGSEGV(11) 段错误信号 试图访问未映射过虚拟内存,或向没有写权限的内存写入数据 终止+core
SIGINT(2) 终端中断符信号 用户按中断键(Ctrl+C),产生此信号,并送至前台进程组的所有进程 终止
SIGFPE(8) 算术异常信号 表示一个算术运算异常,例如除以0、浮点溢出等 终止+core
信号的默认处理方式:终止、终止+core、忽略
4、不可靠信号
是一种早期的信号机制,小于(34)SIGRTMIN都是不可靠信号。
这些不支持排队,可能会丢失,同一个信号产生多次,但进程只收到一次。
5、可靠信号
位于(34)SIGRTMIN和(64)SIGRTMAX之间的信号都是可靠信号,支持排除不会丢失,安全可靠。
信号
信号的捕获处理
1、先在内核中注册一个信号处理函数。
2、当信号发生时内核会捕获信号并调用信号处理函数。
#include <signal.h>
typedef void (*sighandler_t)(int);
sighandler_t signal(int signum, sighandler_t handler);
功能:向内核注册一个信号处理函数
signum:要捕获的信号
handler:
1、信号处理函数的地址
2、SIG_IGN(忽略) SIG_DFL(按默认方式处理)
返回值:成功返