import os import sys import threading import subprocess master_popen = None lock = threading.Lock() def dummy_daemon(): global master_popen args=['sleep', '600'] lock.acquire() master_popen = subprocess.Popen(args) lock.release() master_popen.wait() while True: threading.Thread(target=dummy_daemon).start() args=['sleep', '0.1'] slave_popen = subprocess.Popen(args, stdin=open(os.devnull), stdout=open(os.devnull), stderr=open(os.devnull), bufsize=-1) slave_popen.wait() lock.acquire() if master_popen: master_popen.kill() lock.release() sys.stdout.write('.') sys.stdout.flush()