粉丝25.4万获赞122.7万
信号是操作系统中进程间异步通信的一种方式,用于通知进程发生了某种事件。默认情况下,进程会对特定信号执行预设操作(如终止、暂停等),但通过编程可以捕获信号并自定义处理行为,例如忽略信号或执行特定程序逻辑。
通过kill -l命令可列出系统支持的所有信号及其编号。视频中重点介绍了以下常用信号:
Ctrl+C,默认行为是终止进程Ctrl+Z,默认行为是暂停进程(暂停后可通过fg命令恢复运行)Ctrl+\,默认行为是终止进程并生成核心转储文件在ANSI C中,可通过signal函数注册信号处理函数,原型为:void (*signal(int signum, void (*handler)(int)))(int);
通过signal函数注册处理函数后,可在函数中使用switch-case语句区分不同信号,执行自定义操作(如打印信息、忽略信号等),而非默认的终止/暂停行为。
若程序捕获了所有常用信号(如Ctrl+C、Ctrl+Z、Ctrl+\),导致无法通过常规快捷键结束死循环,可使用kill命令主动发送信号强制终止:
ps等命令获取进程ID,再执行kill -9 <进程ID>信号处理是Unix/Linux应用层开发的重要内容,推荐参考经典书籍《Unix环境高级编程》(APUE)深入学习。
6
4
4
3
1
1
1
0
0
0