]> TLD Linux GIT Repositories - TLD.git/blobdiff - pld-builder.new/PLD_Builder/loop.py
- from https://github.com/pld-linux/pld-builder.new
[TLD.git] / pld-builder.new / PLD_Builder / loop.py
diff --git a/pld-builder.new/PLD_Builder/loop.py b/pld-builder.new/PLD_Builder/loop.py
new file mode 100644 (file)
index 0000000..bc5be9a
--- /dev/null
@@ -0,0 +1,31 @@
+# vi: encoding=utf-8 ts=8 sts=4 sw=4 et
+
+import os
+import sys
+import time
+
+import wrap
+
+def run_loop(fnc, secs = 5, max = 60):
+    def run():
+        pid = os.fork()
+        if pid == 0:
+            wrap.wrap(fnc)
+            sys.exit(0)
+        else:
+            pid, s = os.waitpid(pid, 0)
+            if os.WIFEXITED(s):
+                s = os.WEXITSTATUS(s)
+                if s != 0:
+                    sys.exit(s)
+            else:
+                sys.exit(10)
+
+    start = time.time()
+    while time.time() - start < max:
+        last = time.time()
+        run()
+        took = time.time() - last
+        if took < secs:
+            time.sleep(secs - took)
+