别再杀进程了!让 Ctrl+C 变成“喵”...(用信号实现)
视频来自https://www.youtube.com/watch?v=m6WXrC9Mxzo的中文配音
视频提到的源码地址:https://github.com/jdvillal/program_a
视频核心总结
Ctrl+C 的默认行为
在终端运行程序时,按下 Ctrl+C 会向该进程发送一个 SIGINT(中断信号)。
默认情况下,这会立即终止进程,相当于“杀掉”程序。
信号的概念
信号是 Unix/Linux 系统中一种低层进程间通信机制,不依赖共享内存或显式消息传递。
信号是一个简单的事件通知,例如 SIGINT(中断)、SIGTERM(终止)、SIGKILL(强杀)、SIGUSR1/2(用户自定义)等。
信号只告诉进程“发生了某件事”,不传递复杂数据。
类比说明
视频用交通灯和汽车喇叭作比喻:你不会发邮件或下车跟前车司机解释,只是按喇叭,告诉对方“该走了”。
信号就像喇叭:短小、直接,只是通知事件发生。
捕获与处理信号
可以用编程方式捕获信号(signal handling),在收到信号时执行自定义动作,而不是让系统执行默认行为。
例如,拦截 SIGINT 信号,让 Ctrl+C 不结束程序,而是输出“喵~”、保存数据、打印状态等。
实现方法(示例语言是 Python)
使用 signal 模块注册一个处理函数 signal.signal(signal.SIGINT, handler)。
当用户按下 Ctrl+C,handler 会被调用,执行自定义逻辑。
这样可以让程序优雅退出、记录日志,甚至仅仅做个有趣的动作。
应用场景
优雅关闭长时间运行的程序(如服务器、数据采集、实验脚本)。
提供调试信息而不终止进程。
制作有趣的终端互动效果。
相关标签:
#信号处理 #Linux编程 #进程通信 #CtrlC #SIGINT #系统编程 #Python信号 #Shell终端 #进程控制
立即观看