Linux信号详解:传统与实时信号列表
需积分: 50 57 浏览量
更新于2024-09-09
收藏 37KB DOC 举报
于同一个Session。当用户通过logout或者其他方式断开与终端的连接时,SIGHUP信号会被发送给Session的控制进程,通常是shell。这个信号的默认动作是终止进程,除非进程已经捕获并处理了这个信号。
2)SIGINT
SIGINT信号是由用户按下Ctrl+C组合键产生的,用于中断正在执行的命令或程序。它通常被用来强制停止当前前台进程,如果进程没有适当地处理这个信号,它将被终止。
3)SIGQUIT
SIGQUIT信号是通过Ctrl+\组合键触发的,它的作用类似于SIGINT,但同时还会生成一个核心转储(core dump),这对于调试程序的崩溃非常有用,因为它记录了程序崩溃时的内存状态。
4)SIGILL
SIGILL信号表示非法指令,当进程尝试执行无效的机器指令,比如非法地址、特权指令或者浮点运算在没有浮点硬件支持的CPU上等,系统会发送这个信号。
5)SIGTRAP
SIGTRAP信号主要用于调试,当程序执行到断点或者由调试器触发时,会收到这个信号。
6)SIGABRT
SIGABRT信号通常由程序调用abort()函数时产生,表示程序遇到了不可恢复的错误,需要终止运行。
7)SIGBUS
SIGBUS信号在访问内存时发生错误,如试图访问不存在的内存地址或对对齐错误的数据进行操作时发出。
8)SIGFPE
SIGFPE信号在执行算术运算时出现错误,如除以零、浮点溢出或非法运算等。
9)SIGKILL
SIGKILL信号是强制杀掉进程的最强烈的手段,无法被捕获、忽略或重定向。一旦进程收到这个信号,它必须立即停止执行并退出。
10)SIGUSR1 和 SIGUSR2
SIGUSR1 和 SIGUSR2 是用户自定义信号,可以由应用程序自己定义其含义和处理方式。
11)SIGSEGV
SIGSEGV信号在程序试图访问未映射的内存区域或执行其他非法内存操作时产生,通常导致段错误。
12)SIGPIPE
SIGPIPE信号发生在进程向一个已关闭或者无读端的管道、套接字或其他流式接口写入数据时。
13)SIGALRM
SIGALRM信号由alarm()函数设置的定时器超时时触发,常用于实现程序的定时功能。
14)SIGTERM
SIGTERM信号是请求进程终止的一个信号,较SIGKILL温和,进程可以捕获并执行清理工作后再退出。
15)SIGCHLD
当子进程结束时,SIGCHLD信号会被发送给父进程,告诉它子进程的状态改变。
16~31的信号各有其特定用途,例如控制进程暂停和继续(SIGSTOP, SIGCONT),终端控制(SIGTSTP, SIGTTIN, SIGTTOU),资源限制(SIGXCPU, SIGXFSZ),输入输出操作(SIGIO)等。32~64号信号则是实时信号,提供更好的信号处理机制,支持信号排队,避免信号丢失。
这些信号是Linux系统中进程间通信和异常处理的重要组成部分,理解和正确使用它们对于编写健壮的系统级程序至关重要。
2021-09-26 上传
2015-04-15 上传
2021-10-11 上传
2021-09-26 上传
2008-11-10 上传
2010-12-10 上传
2021-02-01 上传
交叉编译之王hahaha
- 粉丝: 557
- 资源: 45
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析