当前位置: 首页 > article >正文

Linux中的信号有哪些?

目录

1. 终止信号(Termination Signals)

2. 暂停/停止信号(Stop Signals)

3. 错误信号(Error Signals)

4. 核心转储信号(Core Dump Signals)

5. 进程控制信号(Process Control Signals)

6. 其他信号

信号的处理方式


在 Linux 系统中,信号是一种用于进程间通信的机制,可以向进程发送异步通知,以通知其发生某些事件。Linux 中的信号种类很多,常见的信号如下:

1. 终止信号(Termination Signals)

这些信号用于通知进程终止。

  • SIGTERM (15):默认的终止信号,通常用于有序地终止进程。进程可以捕捉该信号,并在终止前执行一些清理工作。
  • SIGKILL (9):强制终止进程的信号,进程无法捕捉或忽略它。这个信号会立即终止进程。
  • SIGINT (2):通常由键盘产生的中断信号(如 Ctrl+C),用来终止前台进程。
  • SIGHUP (1):挂起信号,通常表示终端挂断。许多守护进程会捕捉该信号并重新加载配置文件。

2. 暂停/停止信号(Stop Signals)

用于停止或暂停进程的执行。

  • SIGSTOP (19):无条件地停止进程,无法被捕捉或忽略。
  • SIGTSTP (20):通常由键盘(如 Ctrl+Z)发送的停止信号,进程可以捕捉并处理该信号。
  • SIGCONT (18):继续执行被暂停的进程。可以用于恢复接收到 SIGSTOPSIGTSTP 的进程。

3. 错误信号(Error Signals)

这些信号通常由系统自动发送,用于报告程序出现的错误。

  • SIGSEGV (11):段错误信号,当进程试图访问未分配的内存时产生。
  • SIGFPE (8):浮点异常信号,如除零或其他算术错误时产生。
  • SIGILL (4):非法指令信号,当进程执行了非法或无效的机器指令时产生。
  • SIGBUS (7):总线错误信号,通常由于内存访问出错而产生。

4. 核心转储信号(Core Dump Signals)

这些信号会导致进程终止并生成内存转储(core dump),用于调试。

  • SIGQUIT (3):来自键盘的退出信号(通常为 Ctrl+\),可以产生核心转储。
  • SIGABRT (6):进程调用 abort() 函数时产生,用于异常终止并生成核心转储。

5. 进程控制信号(Process Control Signals)

这些信号用于控制进程的行为。

  • SIGCHLD (17):当子进程状态发生变化(如退出或停止)时,父进程会收到此信号。
  • SIGALRM (14):由计时器产生的信号,常用于定时任务。
  • SIGUSR1 (10) 和 SIGUSR2 (12):用户自定义信号,用户可以在程序中定义这些信号的含义。

6. 其他信号

  • SIGPIPE (13):当进程向一个没有读端的管道或 socket 写入数据时,产生该信号。
  • SIGTTIN (21)SIGTTOU (22):进程尝试从终端读取或写入数据,但该终端为后台进程时,会产生这些信号。

信号的处理方式

进程可以对信号进行以下处理:

  1. 忽略信号:通过调用 signal() 函数忽略特定信号,但某些信号如 SIGKILLSIGSTOP 无法被忽略。
  2. 捕捉信号:进程可以通过设置信号处理函数(handler)来捕捉和处理特定信号。
  3. 默认处理:如果进程没有自定义处理方式,信号会按照系统的默认行为进行处理,例如终止进程。

http://www.kler.cn/a/297252.html

相关文章:

  • SQL注入基础入门完整教学
  • sqlalchemy简单使用
  • 【MATLAB源码-第213期】基于matlab的16QAM调制解调系统软硬判决对比仿真,输出误码率曲线对比图。
  • AIPaperGPT写论文靠谱吗?
  • 高精度E4990A参数资料keysight是德e4990a阻抗分析仪
  • 【深度学习 计算机视觉】计算机视觉工程师所需的和有帮助的基本技能
  • 5. MyBatis 如何实现数据库类型和 Java 类型的转换的?
  • 深入解密 Elasticsearch 查询优化:巧用 Profile 工具/API 提升性能
  • PX4软/硬件(SITL/HITL)在环仿真
  • mysql_redo_log_buffer
  • 读取、写入、生成txt文本文档详解——C#学习笔记
  • Lua5.3 参考手册
  • mozjpeg
  • 【C语言】字符串函数详细讲解
  • vmware虚拟机开机进入 initramfs状态解决方法
  • 通用软件架构设计参考
  • SprinBoot+Vue旅游网站的设计与实现
  • python-新冠病毒
  • Linux 网络编程 --- 应用层
  • 使用Ansible-playbook 自建CA,并签发客户端IP证书