diff options
Diffstat (limited to 'testsuite/timeout/timeout.py')
-rw-r--r-- | testsuite/timeout/timeout.py | 28 |
1 files changed, 28 insertions, 0 deletions
diff --git a/testsuite/timeout/timeout.py b/testsuite/timeout/timeout.py new file mode 100644 index 0000000000..212cf4abdb --- /dev/null +++ b/testsuite/timeout/timeout.py @@ -0,0 +1,28 @@ +#!/usr/bin/python + +import os +import signal +import sys + +secs = int(sys.argv[1]) +cmd = sys.argv[2] + +pid = os.fork() +# XXX error checking +if pid == 0: + # child + os.setpgrp() + os.execvp('/bin/sh', ['/bin/sh', '-c', cmd]) +else: + # parent + def handler(signum, frame): + os.killpg(pid, signal.SIGKILL) # XXX Kill better like .hs + sys.exit(99) + old = signal.signal(signal.SIGALRM, handler) + signal.alarm(secs) + (pid2, res) = os.waitpid(pid, 0) + if (os.WIFEXITED(res)): + sys.exit(os.WEXITSTATUS(res)) + else: + sys.exit(res) + |