Mercurial > hg > aboriginal
diff more/timeout.sh @ 1157:300e6d919d86
Move "sources/more/" to just "more/", add a README explaining why those scripts are there, and adjust calls to them.
author | Rob Landley <rob@landley.net> |
---|---|
date | Mon, 05 Jul 2010 15:37:04 -0500 |
parents | sources/more/timeout.sh@716ad74e0598 |
children | 2868f2d87624 |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/more/timeout.sh Mon Jul 05 15:37:04 2010 -0500 @@ -0,0 +1,20 @@ +#!/bin/bash + +# Run a command line with a hang timeout, which kills the child process if it +# doesn't produce a new line of output for $1 seconds. + +# This script has to be a separate process (rather than just a shell function) +# so killing it doesn't kill the parent process. + +source sources/functions.sh + +if [ $# -lt 1 ] +then + echo "Usage: timeout.sh SECONDS COMMANDS..." >&2 + exit 1 +fi + +trap "killtree $$" EXIT +TIMEOUT="$1" +shift +( eval "$@" ) | tee >(while read -t "$TIMEOUT" -n 32 i; do true; done; sleep 1; kill -TERM $$ 2>/dev/null )