Chinaunix首页 | 论坛 | 博客
  • 博客访问: 6643021
  • 博文数量: 915
  • 博客积分: 17977
  • 博客等级: 上将
  • 技术积分: 8846
  • 用 户 组: 普通用户
  • 注册时间: 2005-08-26 09:59
个人简介

一个好老好老的老程序员了。

文章分类

全部博文(915)

文章存档

2022年(9)

2021年(13)

2020年(10)

2019年(40)

2018年(88)

2017年(130)

2015年(5)

2014年(12)

2013年(41)

2012年(36)

2011年(272)

2010年(1)

2009年(53)

2008年(65)

2007年(47)

2006年(81)

2005年(12)

分类: LINUX

2011-04-13 22:43:09

    Ctrl+C可以终止当前程序的执行,如果不希望Ctrl+C起作用,或者插入自己的处理程序,可以使用stty禁用该功能,或者使用trap捕获该信号,插入处理程序。
  1. 禁用
    在bash脚本中插入如下命令即可:
    stty intr undef
    请注意,该命令同时把整个终端的设置都改掉,导致Ctrl+C对于其它程序也不能用,所以在你的程序末尾还要将Ctrl+C恢复,使用如下命令:
    stty intr ^c
  2. 捕获
    首先定义一个处理函数,比如cleans,用于捕获信号后的处理。
    cleans() {
            echo "user cancelled, exit... "
             exit 1 #如果不希望退出的,该行就不用
    }
    然后使用trap捕获信号
    trap "{ cleans;  }" 1 2 3 6 9 15
    花括号中是处理函数的名称,后面的数字是信号量的代号。使用man 7 signal命令可以查看各种信号量的代码,其中中断信号就是2.
    http://chyd96.blog.163.com/blog/static/62706076201012642227509/
阅读(3515) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~