📜  信号分类(1)

📅  最后修改于: 2023-12-03 15:36:43.091000             🧑  作者: Mango

信号分类介绍

信号是在操作系统中实现进程间通讯的一种方式。信号就是一个异步事件,当某个进程发生一些特定事件(如内存访问错误,管道写满等)时,内核就会向该进程发送一个信号。程序可以自己定义处理某种信号的方式,或者采用默认的方式进行处理。

信号分类

在Linux系统中,信号可以分为以下几类:

标准信号

标准信号是指在Linux系统中定义了信号编号和默认处理方式的信号,范围在1~31之间,其中包括以下信号:

| 信号 | 编号 | 描述 | | -- | -- | -- | | SIGHUP | 1 | 终端连接断开 | | SIGINT | 2 | 进程中断信号 | | SIGQUIT | 3 | 进程退出信号 | | SIGILL | 4 | 非法指令信号 | | SIGTRAP | 5 | 跟踪/断点信号 | | SIGABRT | 6 | 异常终止信号 | | SIGBUS | 7 | 总线错误信号 | | SIGFPE | 8 | 浮点异常信号 | | SIGKILL | 9 | 强制杀死进程信号 | | SIGUSR1 | 10 | 用户自定义信号1 | | SIGSEGV | 11 | 段错误信号 | | SIGUSR2 | 12 | 用户自定义信号2 | | SIGPIPE | 13 | 管道破裂信号 | | SIGALRM | 14 | 闹钟信号 | | SIGTERM | 15 | 进程终止信号 |

程序可以使用signal函数或者sigaction函数自定义处理这些信号,或者使用默认的处理方式。

实时信号

实时信号是指信号编号在32~63之间的信号,这些信号可以被捕捉并处理。实时信号可以使用sigqueue函数传递附加信息。

伪信号

伪信号是指由内核产生的信号,用作进程之间或进程与内核之间交互的一种机制。伪信号的信号编号在SIGRTMIN~SIGRTMAX之间,可以通过kill函数向其他进程发送。

总结

信号在Linux系统中是一种重要的进程间通讯方式,可以帮助程序员在进行多进程/多线程编程时进行同步和异步的操作。在程序设计时,需要充分理解各种信号的含义和使用方式,以免出现不必要的错误和异常。