在Linux系统中执行操作时,进程可以通过发送和接收信号与其他进程进行通信。信号是用于通知进程发生特定事件或请求进程采取特定动作的软件中断。
以下是Linux系统中常见的一些信号及其含义:
Ctrl + C
发送给前台进程。该信号用于请求进程终止运行。这些只是Linux系统中一些常见的信号,还有其他信号可以用于特定目的。您可以使用man
命令以及相关文档来获取更多有关信号的详细信息。
所以,当需要终止进程时,SIGKILL (信号编号为9) 和 SIGTERM (信号编号为15) 是两个常见的信号,但这两个信号还是有很大不同的:
总结:SIGKILL是一种立即终止进程的信号,不允许进程进行任何清理操作。而SIGTERM是一种优雅的终止信号,给予进程完成清理工作的机会。在终止进程时,应首先尝试使用SIGTERM,只有在必要时才使用SIGKILL。
以下是标准的Linux信号,不同的操作系统和版本可能会有所差异:
信号编号 | 信号名称 | 描述 |
---|---|---|
1 | SIGHUP | 挂起信号,通常由终端关闭或断开连接时发送给前台进程组的所有成员 |
2 | SIGINT | 中断信号,通常由用户在终端按下Ctrl + C 发送给前台进程 |
3 | SIGQUIT | 退出信号,通常由用户在终端按下Ctrl + \ 发送给前台进程 |
4 | SIGILL | 非法指令信号,表示进程执行了非法、无效的指令 |
5 | SIGTRAP | 跟踪陷阱信号,通常由调试器使用 |
6 | SIGABRT | 中止信号,由进程自身调用abort() 函数引发 |
7 | SIGBUS | 总线错误信号,表示内存访问错误 |
8 | SIGFPE | 浮点异常信号,表示浮点运算错误 |
9 | SIGKILL | 终止信号,用于立即强制终止进程 |
10 | SIGUSR1 | 用户定义信号1 |
11 | SIGSEGV | 段错误信号,表示进程访问无效的内存段 |
12 | SIGUSR2 | 用户定义信号2 |
13 | SIGPIPE | 管道破裂信号,表示写入已关闭的管道 |
14 | SIGALRM | 闹钟信号,由alarm() 函数或定时器触发 |
15 | SIGTERM | 终止信号,用于请求进程正常终止 |
16 | SIGSTKFLT | 协处理器堆栈错误 |
17 | SIGCHLD | 子进程信号,父进程接收到此信号表示子进程已终止或停止 |
18 | SIGCONT | 继续信号,用于恢复被暂停的进程的执行 |
19 | SIGSTOP | 停止信号,用于暂停进程的执行 |
20 | SIGTSTP | 终端挂起信号,通常由用户在终端按下Ctrl + Z 发送给前台进程 |
21 | SIGTTIN | 后台进程读终端信号 |
22 | SIGTTOU | 后台进程写终端信号 |
23 | SIGURG | 紧急事件信号 |
24 | SIGXCPU | 超过CPU时间限制信号 |
25 | SIGXFSZ | 文件大小超过限制信号 |
26 | SIGVTALRM | 虚拟定时器信号 |
27 | SIGPROF | 进程定时器信号 |
28 | SIGWINCH | 窗口大小改变信号 |
29 | SIGIO | 异步I/O事件信号 |
30 | SIGPWR | 电源故障信号 |
31 | SIGSYS | 非法系统调用信号 |
声明:本作品采用署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0)进行许可,使用时请注明出处。
Author: mengbin
blog: mengbin
Github: mengbin92
cnblogs: 恋水无意
优雅的注释是一种平衡艺术,它要求我们在不牺牲代码清晰度的前提下,避免过度注释。通过遵循上述原则和技巧,我们可以写出既有助于自己,也有助于他人的注释,从而提升代码的整体质量和可维护性。