Skip to content

Latest commit

 

History

History
32 lines (27 loc) · 1.51 KB

常见的信号、系统如何将一个信号通知到进程.md

File metadata and controls

32 lines (27 loc) · 1.51 KB

Linux操作系统中常见的信号有

  1. SIGHUP:挂起进程
  2. SIGINT:中断进程
  3. SIGQUIT:退出进程和生成核心文件
  4. SIGILL:非法指令
  5. SIGTRAP:跟踪/断点陷阱
  6. SIGABRT:异常终止
  7. SIGBUS:总线错误
  8. SIGFPE:浮点异常
  9. SIGKILL:ss进程,该信号不能被阻塞,处理或忽略,一旦接收就会ss进程
  10. SIGUSR1、SIGUSR2:用户自定义信号
  11. SIGSEGV:无效内存引用
  12. SIGPIPE:管道破碎:写到一个没有读者的管道
  13. SIGALRM:实时定时器超时
  14. SIGTERM:终止进程
  15. SIGCHLD:子进程已经停止或终止
  16. SIGCONT:如果进程已经停止,那么继续运行进程
  17. SIGSTOP:停止执行进程
  18. SIGTSTP、SIGTTIN、SIGTTOU:停止进程的运行

一个进程接收到一个信号后,可以有三种方式处理

  1. 忽略这个信号。
  2. 捕捉这个信号。一旦一个进程决定要捕捉某种信号,就需要提供一个函数,这个函数被称为信号处理程序。当这种信号发给该进程时,内核就运行该信号处理程序。
  3. 执行默认操作。

系统如何将一个信号通知到进程

  1. 内核会修改进程上下文信息,并设置标识表明收到信号。
  2. 当进程再次被调度执行时,它会先检查是否有未处理的信号,如果有,就调用相应的信号处理函数。
  3. 如果没有为该信号指定处理函数或者信号被阻塞,那么就执行系统默认的操作,可能是忽略、停止进程或者终止进程等。