IPC(进程间通信)信号含义

IPC(Interprocess Communication,进程间通信)标准信号是指在Unix/Linux系统中用于进程间通信和控制的信号。这些信号通常由操作系统、内核或其他进程发送,用于通知目标进程发生了某些事件(如中断、终止、错误等)。以下是IPC标准信号(通常指Linux系统中的62个信号)的详细解释:

1-31:传统UNIX信号(标准信号)

这些是最常见的信号,编号从1到31,通常有明确的含义和默认行为。

编号 信号名 默认动作 说明
1 SIGHUP 终止 挂起(终端断开或控制进程终止)。
2 SIGINT 终止 中断(键盘输入Ctrl+C)。
3 SIGQUIT 终止+核心 退出(键盘输入Ctrl+\),生成核心转储。
4 SIGILL 终止+核心 非法指令(执行了无效的CPU指令)。
5 SIGTRAP 终止+核心 陷阱(用于调试,如断点触发)。
6 SIGABRT 终止+核心 中止(由abort()函数触发)。
7 SIGBUS 终止+核心 总线错误(内存访问异常)。
8 SIGFPE 终止+核心 浮点异常(除零或溢出)。
9 SIGKILL 终止 强制杀死进程(不可捕获或忽略)。
10 SIGUSR1 终止 用户自定义信号1。
11 SIGSEGV 终止+核心 段错误(非法内存访问)。
12 SIGUSR2 终止 用户自定义信号2。
13 SIGPIPE 终止 管道破裂(写入无读端的管道)。
14 SIGALRM 终止 定时器超时(由alarm()setitimer()触发)。
15 SIGTERM 终止 终止请求(允许进程清理后退出)。
16 SIGSTKFLT 终止 协处理器栈错误(已废弃)。
17 SIGCHLD 忽略 子进程状态改变(终止、停止等)。
18 SIGCONT 继续 恢复被停止的进程(与SIGSTOP相反)。
19 SIGSTOP 停止 停止进程(不可捕获或忽略)。
20 SIGTSTP 停止 终端停止(键盘输入Ctrl+Z)。
21 SIGTTIN 停止 后台进程尝试读取终端。
22 SIGTTOU 停止 后台进程尝试写入终端。
23 SIGURG 忽略 紧急数据(如带外数据到达套接字)。
24 SIGXCPU 终止+核心 CPU时间超限(超过资源限制)。
25 SIGXFSZ 终止+核心 文件大小超限(超过资源限制)。
26 SIGVTALRM 终止 虚拟定时器超时(由setitimer()触发)。
27 SIGPROF 终止 性能分析定时器超时(由setitimer()触发)。
28 SIGWINCH 忽略 窗口大小改变(终端调整大小)。
29 SIGIO 终止 I/O就绪(异步I/O事件,原SIGPOLL)。
30 SIGPWR 终止 电源故障(系统即将断电)。
31 SIGSYS 终止+核心 无效系统调用(错误的参数或指令)。

32-33:预留信号

  • 32 | SIGCANCEL | 忽略 | 线程取消(内部使用,如glibc的线程库)。

  • 33 | SIGSETXID | 忽略 | 保留(glibc内部使用)。


34-64:实时信号(RT信号)

编号从SIGRTMIN(34)到SIGRTMAX(64),用于用户自定义或实时调度。
这些信号没有固定含义,通常由应用程序定义用途,优先级高于标准信号。

编号 信号名 默认动作 说明
34-64 SIGRTMINSIGRTMAX 终止 实时信号(编号可能因系统而异)。

关键说明

  1. 默认动作

    • 终止:进程终止。

    • 终止+核心:进程终止并生成核心转储文件(用于调试)。

    • 停止:进程暂停(可通过SIGCONT恢复)。

    • 忽略:信号被静默忽略。

  2. 不可捕获/忽略的信号

    • SIGKILL(9)和SIGSTOP(19)不能被捕获、阻塞或忽略。

  3. 实时信号

    • 用于高优先级通信,支持排队(多个相同信号会被依次处理)。

  4. 信号列表差异

    • 不同Unix系统(如Linux、BSD)可能略有差异,建议通过kill -l查看当前系统的信号列表。


常用操作

  • 查看所有信号:

    kill -l

  • 发送信号:

    kill -SIGNAME PID

  • 最常用的IPC信号及其典型应用场景https://blog.csdn.net/weixin_55932020/article/details/148939435?sharetype=blogdetail&sharerId=148939435&sharerefer=PC&sharesource=weixin_55932020&spm=1011.2480.3001.8118

    你可能感兴趣的:(#,Linux系统编程,linux,运维,服务器)