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 )