让程序运行x秒但保留控制-C的能力

时间:2012-05-21 11:38:56

标签: fork sh

我正在寻找一种方法来运行x秒的脚本,但仍有可能在x秒过去之前中断它。

如果我不需要Ctrl-C的能力,我会写

./my_script &
sleep $x
kill $!

但是如果我在脚本中按Ctrl-C,那么fork会继续运行。

如果在子shell中启动,我知道如何杀死脚本:

trap "echo sub-script terminated" INT
(./my_script)
trap - INT

但我不知道如何将其转换为分叉(我不清楚我必须承认的两个概念之间的差异)。

编辑:我想知道解决方案有多便携,如果你能在答案中提到这一点,那对我来说是非常有价值的。

1 个答案:

答案 0 :(得分:1)

timeout $x ./my_script

如果你有一个相当新的GNU Coreutils,那里包含timeout。之前,曾经存在一些来自不同来源的稍微不兼容的timeout变体(我在大多数地方都有来自最初IIRC的Postfix发行版)。

如果您的发行版没有timeout,那么有许多shell和Perl黑客攻击。

相关问题