跳至主要內容

Linux - 信号机制 (Signals)

Kamimika...大约 2 分钟LinuxLinuxSignals笔记

Linux 中的信号是进程间通信的一种异步事件,可以在任意时刻发生,例如键盘按下 Ctrl + C 就会产生 SIGINT 信号

一、常见的信号

信号名称信号值说明
SIGHUP1控制终端挂起信号
SIGINT2进程中断信号,由 Ctrl + C 产生,用于进程终止
SIGABRT6进程终止信号,由 abort() 函数产生,用于进程异常终止
SIGFPE8浮点异常信号,非法的数学运算
SIGKILL9强制杀死进程信号,由 kill -9 <pid> 命令产生,用于杀死进程
SIGSEGV11无效内存引用信号,由 segmentation fault 产生,通常由解引用空指针引起
SIGPIPE13管道破裂信号,非法写入管道
SIGALRM14闹钟信号,由 alarm() 函数产生,用于定时器
SIGTERM15终止进程信号,用于终止进程
SIGCONT18继续进程信号,用于恢复被暂停的进程
SIGSTOP19暂停进程信号,由 Ctrl + Z 产生,用于暂停进程
SIGUSR130,10,16用户自定义信号 1
SIGUSR231,12,17用户自定义信号 2

二、信号处理

进程在接收到信号后,可能采取以下三种处理方式:

  1. 操作系统默认处理
  2. 忽略信号 (但SIGSTOP, SIGKILL 无法被忽略)
  3. 捕获信号并自定义处理 (除了 SIGSTOP, SIGKILL 信号)

三、信号的发送

信号的发送需要通过 kill 命令 (叫 kill 命令是因为它最初的功能就是杀死进程,而后来发展为发送信号的命令)

语法:

kill -<signal> <pid>
上次编辑于:
贡献者: wzh
评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.4.1