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

打印 上一主题 下一主题

主题 1594|帖子 1594|积分 4782

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
在 Shell 脚本中,可以通过 trap 下令捕获键盘中断信号(通常是 SIGINT,即 Ctrl+C)。以下是具体的实现方法:
1.使用 trap 捕获键盘中断信号
trap 下令用于捕获信号并执行相应的下令或函数。SIGINT(信号编号为 2)是键盘中断信号。
2.示例脚本
以下是一个捕获键盘中断信号的示例脚本:
  1. #!/bin/bash
  2. # 定义一个处理键盘中断的函数
  3. handle_interrupt() {
  4.     echo "键盘中断信号被捕获,正在清理资源..."
  5.     # 在这里执行清理操作,例如关闭文件、释放资源等
  6.     echo "资源已清理,脚本退出。"
  7.     exit 0
  8. }
  9. # 捕获 SIGINT 信号
  10. trap handle_interrupt SIGINT
  11. # 模拟一个长时间运行的任务
  12. echo "脚本正在运行,按 Ctrl+C 中断..."
  13. while true; do
  14.     sleep 1
  15. done
复制代码
3.脚本阐明
handle_interrupt 函数:
当捕获到 SIGINT 信号时,执行这个函数。
在这个函数中,可以执行清理操作,比方关闭文件、开释资源等。
trap handle_interrupt SIGINT:
trap 下令用于捕获信号。
handle_interrupt 是要执行的函数。
SIGINT 是要捕获的信号(键盘中断信号)。
主循环:
脚本进入一个无限循环,模拟长时间运行的任务。
当用户按下 Ctrl+C 时,SIGINT 信号被捕获,执行 handle_interrupt 函数。
4.运行脚本
将上述脚本生存为 script.sh,然后运行:
  1. chmod +x script.sh
  2. ./script.sh
复制代码
运行后,按下 Ctrl+C,脚本会捕获键盘中断信号并执行清理操作。
5.规复默认举动
如果必要在捕获信号后规复默认举动(比方直接退出脚本),可以在 trap 中重新设置信号处置惩罚为默认举动:
  1. trap SIGINT  # 恢复默认行为
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

海哥

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表