shell——信号

1. 注册信号处理

#!/bin/bash

function CleanUp()
{
        echo "clean up"
}

trap CleanUp 2

sleep 10
echo "exit"

2. 定时器

#!/bin/bash

function StartTimer()
{
        # 如果没有指定,默认10s
        local INTERVAL=${1:-10}

        if [ $INTERVAL -gt 0 ]; then
                # 定时时间后向自己发信号
                sleep $INTERVAL && kill  -s 14  $$ &
                # 记住后台进程PID,如果用户需要,用于杀死后台进程
                TIMERPID=$!
        else
                echo "Error : interval must be positive "
                return 1
        fi
}

function UnsetTimer()
{
        # 杀死子进程
        kill $(pgrep -P $TIMERPID)
        # 杀死父进程
        kill $TIMERPID
}

function ExpireHandler()
{
        echo ""
        echo "Timeout, bye !"
        exit 14
}

# 若用户5秒没有输入,则停止等待
StartTimer 5
trap ExpireHandler 14

read -p "Please input your id : " id
# 取消定时器
UnsetTimer
echo "Your id is $id"

posted on   开心种树  阅读(55)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
历史上的今天:
2020-03-24 第20章 广播
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

统计

点击右上角即可分享
微信分享提示