shell脚本中捕获键盘中断信号trap

在 Shell 脚本中,可以通过 trap 命令捕获键盘中断信号(通常是 SIGINT,即 Ctrl+C)。以下是具体的实现方法:

1.使用 trap 捕获键盘中断信号

trap 命令用于捕获信号并执行相应的命令或函数。SIGINT(信号编号为 2)是键盘中断信号。

2.示例脚本

以下是一个捕获键盘中断信号的示例脚本:

bash 复制代码
#!/bin/bash

# 定义一个处理键盘中断的函数
handle_interrupt() {
    echo "键盘中断信号被捕获,正在清理资源..."
    # 在这里执行清理操作,例如关闭文件、释放资源等
    echo "资源已清理,脚本退出。"
    exit 0
}

# 捕获 SIGINT 信号
trap handle_interrupt SIGINT

# 模拟一个长时间运行的任务
echo "脚本正在运行,按 Ctrl+C 中断..."
while true; do
    sleep 1
done

3.脚本说明

handle_interrupt 函数:

当捕获到 SIGINT 信号时,执行这个函数。

在这个函数中,可以执行清理操作,例如关闭文件、释放资源等。

trap handle_interrupt SIGINT:

trap 命令用于捕获信号。

handle_interrupt 是要执行的函数。

SIGINT 是要捕获的信号(键盘中断信号)。

主循环:

脚本进入一个无限循环,模拟长时间运行的任务。

当用户按下 Ctrl+C 时,SIGINT 信号被捕获,执行 handle_interrupt 函数。

4.运行脚本

将上述脚本保存为 script.sh,然后运行:

bash 复制代码
chmod +x script.sh
./script.sh

运行后,按下 Ctrl+C,脚本会捕获键盘中断信号并执行清理操作。

5.恢复默认行为

如果需要在捕获信号后恢复默认行为(例如直接退出脚本),可以在 trap 中重新设置信号处理为默认行为:

bash 复制代码
trap SIGINT  # 恢复默认行为
相关推荐
禾川兴科技2 天前
支持的switch2的便携屏方案,LDR6021QPD协议芯片加MT9700FFFUBG显示器驱动芯片
计算机外设
●VON2 天前
鸿蒙 PC Markdown 编辑器快速打开:模糊排序、最近权重与纯键盘路径
华为·编辑器·计算机外设·harmonyos·鸿蒙
编程圈子5 天前
操作系统学习14 IDT + PIC + 键盘中断
android·学习·计算机外设
Saniffer_SH7 天前
NAND技术(二):从 Channel、Die/LUN、P/E Cycle 到 LDPC,一次讲透 NAND 里那些最容易误解的概念
人工智能·驱动开发·嵌入式硬件·测试工具·fpga开发·计算机外设·压力测试
遇见小修修7 天前
⚠键盘失灵?5 步自查,不用花钱换新键盘
运维·服务器·数据库·计算机外设·电脑·负载均衡
unityのkiven8 天前
Unity UGUI 中 EventTrigger 导致 ScrollRect 鼠标滚轮失效的问题分析与解决
unity·计算机外设·游戏引擎
解局易否结局8 天前
鸿蒙 PC 应用开发实战:多显示器、显示密度与跨屏适配
华为·计算机外设·harmonyos
FrameNotWork9 天前
HarmonyOS 6.0 输入法与键盘避让 — 聊天页面底部输入栏被键盘挡住的绝望
华为·计算机外设·harmonyos
线束线缆组件品替网9 天前
Amphenol ICC RJE1Y22610C42401线束组件应用解析
网络·数码相机·智能手机·计算机外设·电脑·电视盒子
q***o6910 天前
从黑光视觉到高算力SoC:爱芯元智边缘计算芯片矩阵全景
计算机外设