]>
Commit | Line | Data |
---|---|---|
dfff8bd5 MM |
1 | # vi: encoding=utf-8 ts=8 sts=4 sw=4 et |
2 | ||
3f446d8f MM |
3 | import os |
4 | import sys | |
5 | import time | |
6 | ||
7 | import wrap | |
8 | ||
9 | def run_loop(fnc, secs = 5, max = 60): | |
dfff8bd5 MM |
10 | def run(): |
11 | pid = os.fork() | |
12 | if pid == 0: | |
13 | wrap.wrap(fnc) | |
14 | sys.exit(0) | |
15 | else: | |
16 | pid, s = os.waitpid(pid, 0) | |
17 | if os.WIFEXITED(s): | |
18 | s = os.WEXITSTATUS(s) | |
19 | if s != 0: | |
20 | sys.exit(s) | |
21 | else: | |
22 | sys.exit(10) | |
e6376553 | 23 | |
dfff8bd5 MM |
24 | start = time.time() |
25 | while time.time() - start < max: | |
26 | last = time.time() | |
27 | run() | |
28 | took = time.time() - last | |
29 | if took < secs: | |
30 | time.sleep(secs - took) |