LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 902|回复: 2

请问trap怎么用

[复制链接]
发表于 2007-7-4 13:37:51 | 显示全部楼层 |阅读模式
RT
       
使用命令trap来捕捉信号
它有三种形式分别对应三种不同的信号回应方式.
第一种:
trap "commands" signal-list
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令.

第二种:
trap signal-list
trap不指定任何命令,接受信号的默认操作.默认操作是结束进程的运行.

第三种:
trap " " signal-list
trap命令指定一个空命令串,允许忽视信号

在网上只能查到这么多,不过还是不明白。
当脚本收到signal-list清单内列出的信号时,trap命令执行双引号中的命令.
signal-list清单内列出的信号都有哪些?

我只知道:
trap "echo 123" INT
运行以后按下Ctrl + C 就会echo 123......


有没有简单的例子啊?
谢谢
发表于 2007-7-4 18:07:10 | 显示全部楼层
这是我从书上看到的
类型               名字            编号
非真实信号         EXIT             0
挂起               HUP              1
中断               INT              2
退出               QUIT             3
结束               KILL             9
软件中断           TERM             15
停止               TSTP             20
调试               DEBUG           在每个命令执行之后执行trap语句指定的
                                       命令(实际上不是一个信号)
错误               ERR              在那些没有正常终止(通常是该命令
                                      退出状态非0)的命令结束之后执行trap
                                       语句指定的内容(实际上不是一个信号)


使用方法 trap ['command'] [signal]

  1. #! /bin/sh
  2. trap 'echo PROGRAM INTERRUPTED; exit 1 ' INT
  3. while true
  4. do
  5.    echo "Program running."
  6.    sleep 1
  7. done
复制代码

当执行这个脚本时,一直显示Program running.
直到你按下CONTROL -C
会输出
PROGRAM INTERRUPTED
这就是用了中断信号
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-7-5 14:26:15 | 显示全部楼层
多谢!研究研究先,呵呵
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表