我有没有办法在KSH中实施自定义假信号?目前正在捕获错误信号并退出。但是,由于更改,有些呼叫可能无法返回成功,但是这是一个有效的条件。在这种情况下,我想确保此呼叫会产生不同的信号或以不同的方式处理错误。有没有办法做到这一点?

有帮助吗?

解决方案

您可以使用 kill 要将您想要的任何信号发送到当前外壳。您可以使用 exit 在子壳或 return 在设置所需的任何错误代码的函数中。

尝试此脚本:

#!/bin/ksh
trap 'echo USR1 signal processed' USR1
trap 'echo ERR signal processed' ERR
[[ $1 == a ]] && kill -s USR1 $$ || (exit 1)
echo "done"

例子:

$ ./testsignal
ERR signal processed
done
$ ./testsignal a
USR1 signal processed
done

其他提示

也许您可以简单地包装出您要在构造中专门处理的退出代码的陈述,这些陈述只需完成您想要的工作(采用“或“如果不是””构造并分析退出代码)。

这似乎是一种更干净的编程风格,不是吗?

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top