1
0
mirror of git://git.sv.gnu.org/coreutils.git synced 2026-04-21 03:12:48 +02:00

timeout: add the --kill-after option

Based on a report from Kim Hansen who wanted to
send a KILL signal to the monitored command
when `timeout` itself received a termination signal.
Rather than changing such a signal into a KILL,
we provide the more general mechanism of sending
the KILL after the specified grace period.

* src/timeout.c (cleanup): If a non zero kill delay
is specified, (re)set the alarm to that delay, after
which a KILL signal will be sent to the process group.
(usage): Mention the new option.  Separate the description
of DURATION since it's now specified in 2 places.
Clarify that the duration is an integer.
(parse_duration): A new function refactored from main(),
since this logic is now called for two parameters.
(main): Parse the -k option.
* doc/coreutils.texi (timeout invocation): Describe the
new --kill-after option and use @display rather than
@table to show the duration suffixes.  Clarify that
a duration of 0 disables the associated timeout.
* tests/misc/timeout-parameters: Check invalid --kill-after.
* tests/misc/timeout: Check a valid --kill-after works.
* NEWS: Mention the new feature.
This commit is contained in:
Pádraig Brady
2010-03-15 23:03:30 +00:00
parent 4edb86215d
commit c403c31e88
5 changed files with 82 additions and 40 deletions

View File

@@ -40,6 +40,12 @@ test $? = 2 || fail=1
timeout 1 sleep 10
test $? = 124 || fail=1
# kill delay. Note once the initial timeout triggers,
# the exit status will be 124 even if the command
# exits on its own accord.
timeout -s0 -k1 1 sleep 10
test $? = 124 && fail=1
# Ensure `timeout` is immune to parent's SIGCHLD handler
# Use a subshell and an exec to work around a bug in FreeBSD 5.0 /bin/sh.
(

View File

@@ -35,6 +35,10 @@ test $? = 125 || fail=1
timeout invalid sleep 0
test $? = 125 || fail=1
# invalid kill delay
timeout --kill-after=invalid 1 sleep 0
test $? = 125 || fail=1
# invalid timeout suffix
timeout 42D sleep 0
test $? = 125 || fail=1