Linux C语言 48-信号总结

发布时间:2024年01月07日

Linux C语言 48-信号总结

本节关键字:Linux、C语言、常用信号
相关C库函数:printf、signal、kill

Linux中都有哪些信号

信号在Linux操作系统中是很重要的,信号的产生方式可以是来自键盘、由软件条件产生、调用硬件异常产生。来自系统函数调用产生、在Linux中一共有64种信号 ,Linux用户可以通过 kill -l 查看,如下:

[root@localhost ~]# uname -a
Linux localhost.localdomain 3.10.0-1160.71.1.el7.x86_64 #1 SMP Tue Jun 28 15:37:28 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
[root@localhost ~]# kill -l
 1) SIGHUP     2) SIGINT     3) SIGQUIT     4) SIGILL     5) SIGTRAP
 6) SIGABRT     7) SIGBUS     8) SIGFPE     9) SIGKILL    10) SIGUSR1
11) SIGSEGV    12) SIGUSR2    13) SIGPIPE    14) SIGALRM    15) SIGTERM
16) SIGSTKFLT    17) SIGCHLD    18) SIGCONT    19) SIGSTOP    20) SIGTSTP
21) SIGTTIN    22) SIGTTOU    23) SIGURG    24) SIGXCPU    25) SIGXFSZ
26) SIGVTALRM    27) SIGPROF    28) SIGWINCH    29) SIGIO    30) SIGPWR
31) SIGSYS    34) SIGRTMIN    35) SIGRTMIN+1    36) SIGRTMIN+2    37) SIGRTMIN+3
38) SIGRTMIN+4    39) SIGRTMIN+5    40) SIGRTMIN+6    41) SIGRTMIN+7    42) SIGRTMIN+8
43) SIGRTMIN+9    44) SIGRTMIN+10    45) SIGRTMIN+11    46) SIGRTMIN+12    47) SIGRTMIN+13
48) SIGRTMIN+14    49) SIGRTMIN+15    50) SIGRTMAX-14    51) SIGRTMAX-13    52) SIGRTMAX-12
53) SIGRTMAX-11    54) SIGRTMAX-10    55) SIGRTMAX-9    56) SIGRTMAX-8    57) SIGRTMAX-7
58) SIGRTMAX-6    59) SIGRTMAX-5    60) SIGRTMAX-4    61) SIGRTMAX-3    62) SIGRTMAX-2
63) SIGRTMAX-1    64) SIGRTMAX    
[root@localhost ~]# 
  • 前32种称为不可靠信号,一般用于软件,不支持排队;
  • 后32种称为可靠信号,一般用于硬件,支持排队。

常用信号一览表

信号值信号宏说明
1SIGHUP进程立即关闭,终端连接(正常或非正常)结束时发出
2SIGINT程序中止信号,用于中止前台程序,输出 Ctrl+C 快捷键
3SIGQUIT程序退出信号,输出 Ctrl+\ 快捷键
6SIGABRT终止进程并产生core文件,调用abort函数时产生
7SIGBUS终止进程并产生core文件,硬件故障,进程访问非法地址
8SIGFPE发生致命的算术运算错误时发出,不仅包括浮点运算错误,还包括溢出及除数为 0 等其他所有的算术运算错误
9SIGKILL无条件立即结束程序的运行。本信号不能被阻塞、处理和忽略。般用于强制中止进程
10SIGUSR1用户自定义信号,一般被用来告知应用程序重载配置文件
11SIGSEGV终止进程并产生core文件,硬件故障,进程访问非法地址
12SIGUSR2用户自定义信号,作用和意义由用户自己定义
13SIGPIPE终止收到该信号的进程,涉及管道和socket通信。socket通信时,对端异常终止,我端写套接字时收到该信号
14SIGALRM时钟定时信号,计算的是实际的时间或时钟时间。alarm 函数使用该信号
15SIGTERM正常结束进程的信号,kill 命令的默认信号。如果进程已经发生了问题,那么这 个信号是无法正常中止进程的,这时我们才会尝试 SIGKILL 信号,也就是信号 9
17SIGCHLD子进程退出信号,如果父进程没有忽略该信号也没有处理该信号,则子进程退出后将形成僵尸进程。
18SIGCONT让暂停的进程恢复执行。本信号不能被阻断
19SIGSTOP暂停前台进程,相当于输入 Ctrl+Z 快捷键。本信号不能被阻断

补充说明:

  • Term 表示终止进程
  • Core 表示终止进程并 dump core
  • Stop 挂起线程
  • Cont 恢复挂起的线程
文章来源:https://blog.csdn.net/qq_45157350/article/details/135379338
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。