-.TH "timeout" 1 "5 June 2011" "Mark Wooding" "Toys"
+.TH "mtimeout" 1 "5 June 2011" "Mark Wooding" "Toys"
.SH NAME
-timeout \- run a program for at most a given amount of time
+mtimeout \- run a program for at most a given amount of time
.
.SH SYNOPSIS
-.B timeout
+.B mtimeout
.RB [ \-s
.IR signal ]
.I seconds
.
.SH DESCRIPTION
The
-.B timeout
+.B mtimeout
command runs a specified program for at most a given number of
.IR seconds .
.PP
It works by running the given command as a separate process group. It
then waits either for the top-level process (only) to exit, or for the
timeout to expire, whichever happens first. If the process exits, then
-.B timeout
+.B mtimeout
exits too, setting its exit status to match. Any other processes which
may have been started are left unmolested.
.PP
On the other hand, if the timeout goes off, then
-.B timeout
+.B mtimeout
sends its child process group the specified signal, by default
.BR SIGTERM ,
though you can choose a different one with the
.B SIGKILL
to the process group and waits a further five seconds. If the child
still hasn't exited in this time, then
-.B timeout
+.B mtimeout
gives up and exits.
.PP
The following command-line options are recognized.
.BR KILL ).
.PP
The
-.B timeout
+.B mtimeout
program sets its exit status as follows.
.TP
0\(em127
The child process ran to completion within the given time:
-.BR timeout 's
+.BR mtimeout 's
exit status is the same as that of the child process.
.TP
128
The child process exited in a way which
-.B timeout
+.B mtimeout
could not interpret.
.TP
129\(em250
The child process was killed by a signal: the exit status is 128 higher
than the signal number. If
-.B timeout
+.B mtimeout
had to kill the child because it took too long, then its exit status
will be like this.
.TP
251
The child took too long and couldn't be killed:
-.B timeout
+.B mtimeout
gave up waiting.
.TP
252
.TP
253
The
-.B timeout
+.B mtimeout
program couldn't parse the arguments provided to it: an error message
was written to standard error.
.TP
254
A system call made by
-.B timeout
+.B mtimeout
failed unexpectedly: an error message was written to standard error.
.TP
255
.
.SH BUGS
Because
-.B timeout
+.B mtimeout
works by running its child process in a separate process group, it
interacts oddly with interactive shells. If the child process group
attempts to do terminal I/O (particularly reading from a terminal) then
worse.
.PP
The
-.B timeout
+.B mtimeout
program makes an effort to propagate interesting signals to its child
process group. Currently, it propagates
.BR SIGTSTP ,
option to control this list.
.PP
If you suspend
-.B timeout
+.B mtimeout
and its child process group, the timer continues running anyway. (I'm
not quite sure whether this is the right behaviour.)
.PP
earlier than the inner one. Since
.B SIGTERM
isn't propagated (currently, at least), the inner
-.B timeout
+.B mtimeout
is killed by the outer one, and loses control of its child process
group. You could possibly work around this by sending
.B SIGQUIT