man signal.h指示Solaris 11中没有SIGEXIT。如何在我的shell脚本中捕获它?或者,我如何模拟陷阱SIGEXT的旧行为?
发布于 2013-08-30 04:21:13
为什么要看C API手册中的shell特性?
您绝对可以在Solaris11shell(至少是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
发布于 2013-08-30 02:43:50
要运行cleanup和其他类似任务,您可以将脚本包装在第二个脚本中。第二个脚本可以执行第一个脚本,存储退出代码,执行清理,并使用存储的代码退出。
https://stackoverflow.com/questions/18516291
复制相似问题