加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Shell脚本用Trap获取CTRL Z.

发布时间:2020-12-13 23:09:30 所属栏目:Linux 来源:网络整理
导读:我试图在我的脚本陷阱中获取SIGSTOP CTRL Z信号. 当我的脚本执行时,如果我暂停执行,发送一个SIGSTOP signalCTRL Z,它需要删除我在其中创建的文件并终止执行. 我不明白为什么以下脚本不起作用.但是,更重要的是,正确的方法是什么? #!/bin/bashDIR="temp_folde
我试图在我的脚本陷阱中获取SIGSTOP CTRL Z信号.

当我的脚本执行时,如果我暂停执行,发送一个SIGSTOP signalCTRL Z,它需要删除我在其中创建的文件并终止执行.

我不明白为什么以下脚本不起作用.但是,更重要的是,正确的方法是什么?

#!/bin/bash

DIR="temp_folder"
trap "rm -r $DIR; kill -SIGINT $$" SIGSTP

if [ -d $DIR ]
then
    rm -r $DIR
else
    mkdir $DIR
fi
sleep 5

编辑:

SIGSTOP不能被捕获,但是SIGTSTP可以被捕获,并且根据我在searching on the internet之后的理解和下面的答案,使用CTRL Z发送信号时捕获是正确的.但是,当我在运行脚本时按CTRL Z它会卡住,这意味着无论后来发送什么信号,脚本都会无休止地执行.

解决方法

有两个信号你无法捕获*,SIGKILL和SIGSTOP.使用另一个信号.

*:无需修改内核

IEEE standard:

Setting a trap for SIGKILL or SIGSTOP produces undefined results.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读