如何在Solaris 11外壳脚本中捕获出口? [英] How do I trap EXIT in a solaris 11 shell script?

查看:12
本文介绍了如何在Solaris 11外壳脚本中捕获出口?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

Man signal.h指示Solaris 11中没有SIGEXIT。如何在我的外壳脚本中捕获它?或者,我如何模拟陷印SIGEXT的旧行为?

推荐答案

为什么要查看C API手册中的外壳功能?

您绝对可以在Solaris 11外壳(至少是ksh93、bash和sh)下捕获SIGEXIT信号。

$ cat /etc/release
                             Oracle Solaris 11.1 X86
  Copyright (c) 1983, 2012, Oracle and/or its affiliates.  All rights reserved.
                           Assembled 19 September 2012
$ cat /tmp/z
#!/bin/ksh
trap "date" exit
sleep 60
echo done
$ /tmp/z
^CThursday, August 29, 2013 10:18:58 PM CEST
$ 
要澄清的是,在Unix下没有也从来没有信号0或SIGEXIT。它是一个"伪"信号,有两种用途:

  • 通过将其发送给进程(例如:kill -0 pid),在这种情况下,目标进程不会收到任何内容,但发送方将通过检查KILL返回值知道该进程是否确实存在。

  • 通过将其捕获到外壳脚本中,在这种情况下,无论脚本如何退出,处理程序都将被执行。

这篇关于如何在Solaris 11外壳脚本中捕获出口?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆