信号机制:signal
信号的基本概念
信号(signal)
- 又叫:软中断信号,是一种异步通信的IPC
- 类似于硬件中断,可以将一个事件以信号形式通知给进程
- 给一个指定的进程发送一个信号量
- 信号只是告诉进程发送了什么事,并不传递数据
- 进程表的表项中有一个软中断信号域,有信号发给该进程,对应位置位
- 进程根据接收信号类型作相应的处理
信号的来源
- 来自shell终端用户输入的各种信号:ctrl + C/D
- 来自其他进程或者进程本身发送的信号
- 来自系统内部的信号
- 硬件异常:如SIGBUS表示总线错误、SIGSEGV表示段错误
- 终端相关信号
- 软件事件相关的信号
一个进程对信号的处理方式
- 缺省行为
- 忽略信号:如SIGIGN、SIGCHLD
- SIGKILL/SIGSTOP比较特殊,不能忽略,所有进程都要在OS管控之下
- 终止进程:SIGTERM、SIGINT、SIGHUP
- 终止进程并内核转储:SIGBUS、SIGABRT、SIGQUIT
- 忽略信号:如SIGIGN、SIGCHLD
- 捕获信号并执行信号注册的handler
- 通过signal系统调用可以改变信号的处理行为,即注册新的handler
- 当有信号到来时,信号的处理类

本文详细介绍了Linux中的信号机制signal,包括信号的基本概念、来源、进程对信号的处理方式以及相关的系统调用接口。信号作为异步通信的IPC方式,用于通知进程发生了特定事件。信号的处理包括默认行为、忽略或捕获执行handler。文章讨论了kill、pause、alarm和setitimer等信号处理API的使用,展示了如何通过这些接口进行进程间的交互和控制。
最低0.47元/天 解锁文章
4063

被折叠的 条评论
为什么被折叠?



