信号
- 不同信号用不同的整数标识
- 信号是一种软件层面的异步事件机制
信号产生的时机
- 信号产生会修改目标进程的task_struct
信号递送行为
- 传入信号值参数
阻塞和未决
- 让产生的信号不能马上递送,而是处于未决状态
- 已产生但未递送的信号
原理:
不同信号的阻塞
低速系统调用
- 在信号递送完成之后,会自动重启低速系统调用
signal特点:一次注册,永久生效
- 递送A时,会将A加入mask,其他信号不会加入mask
- 会自动重启低速系统调用
让signal只生效一次
sigaction
sigaction属性
sigaction更多参数
- SA_RESTART可以重启低速系统调用
- SA_SIGINFO三参数版本
让递送的信号A只能生效一次,SA_RESETHAND
递送的信号A不屏蔽SA_NODEFER
- 递送过程中不加入mask
参数sa_mask
- 本质是一个位图
- 用来指定递送信号过程中的额外屏蔽信号
sigprocmask
- 实现全程阻塞
获取pending集合
pause
- 让当前进程处于阻塞,等待信号到来
kill发送信号
- 给别人发信号
raise
- 给自己发信号
alarm
- 时钟信号
时钟
实现mybash