目录
- 1、信号概念
- 2、Linux常用信号表
- 3、信号的5种默认处理动作
橙色
1、信号概念
信号是 Linux进程间通信的最古老的方式之一,是事件发生时对进程的通知机制,有时也称之为软件中断,它是在软件层次上对中断机制的一种模拟,是一种异步通信的方式。信号可以导致一个正在运行的进程被另一个正在运行的异步进程中断,转而处理某一个突发事件。
产生信号的几种方式:
- 对于前台进程,用户可以通过输入特殊的终端字符来给它发送信号,比如ctrl + c 会给进程发送一个中断进程。
- 硬件发生异常,硬件检测到一个错误条件并通知内核,随即再由内核发送相关信号给相关进程。
- 运行 kill 命令或函数
- 系统状态发生变化
使用信号的两个主要目的:
- 让进程知道已经发生了一个特定的事情
- 强迫进程执行它自己代码中的信号处理程序
查看系统定义的信号列表:kill -l
前31个为标准信号(会用到),34-64为预定义好的信号(基本用不到)
2、Linux常用信号表
3、信号的5种默认处理动作
查看进程的详细信息: man 7 signal
信号的5中默认处理动作:
- Term 终止进程
- Tgn 当前进程忽略掉这个信号
- Core 终止进程,并生成一个Core文件
- Stop 暂停当前进程
- Cont 继续执行当前被暂停的进程
SIGKILL和SIGSTOP信号不能被捕捉、阻塞或者忽略,只能执行默认动作。