首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在solaris 11 shell脚本中捕获出口?

如何在solaris 11 shell脚本中捕获出口?
EN

Stack Overflow用户
提问于 2013-08-30 00:27:56
回答 2查看 849关注 0票数 0

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

EN

回答 2

Stack Overflow用户

发布于 2013-08-30 04:21:13

为什么要看C API手册中的shell特性?

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

代码语言:javascript
复制
$ 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

  • ,在这种情况下,目标进程不会收到任何内容,但发送方将通过检查kill返回值知道该进程是否确实存在。通过将其捕获到shell脚本中来

  • ,在这种情况下,无论发生什么情况,当脚本退出时都将执行处理程序。
票数 3
EN

Stack Overflow用户

发布于 2013-08-30 02:43:50

要运行cleanup和其他类似任务,您可以将脚本包装在第二个脚本中。第二个脚本可以执行第一个脚本,存储退出代码,执行清理,并使用存储的代码退出。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18516291

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档