]> TLD Linux GIT Repositories - tld-builder.git/blob - PLD_Builder/loop.py
- from https://github.com/pld-linux/pld-builder.new
[tld-builder.git] / PLD_Builder / loop.py
1 # vi: encoding=utf-8 ts=8 sts=4 sw=4 et
2
3 import os
4 import sys
5 import time
6
7 import wrap
8
9 def run_loop(fnc, secs = 5, max = 60):
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)
23
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)
31