小编Joh*_*ris的帖子

用信号陷阱中断bash中的睡眠

我试图SIGUSR1通过sleep命令在正在睡眠的bash脚本中捕获信号:

#!/bin/bash

trap 'echo "Caught SIGUSR1"' SIGUSR1

echo "Sleeping.  Pid=$$"
while :
do
    sleep 10
    echo "Sleep over"
done
Run Code Online (Sandbox Code Playgroud)

信号陷阱有效,但回显的信息sleep 10在完成之前不会显示.
看起来bash信号处理在处理信号之前等待当前命令完成.

有没有办法sleep让它在获得信号后立即中断运行命令,就像C程序中断libc sleep()功能一样?

bash shell

23
推荐指数
3
解决办法
1万
查看次数

标签 统计

bash ×1

shell ×1