Python Subprocess.Popen from a thread
You didn't supply any code for us to look at, but here's a sample that does something similar to what you describe:
import threadingimport subprocessclass MyClass(threading.Thread): def __init__(self): self.stdout = None self.stderr = None threading.Thread.__init__(self) def run(self): p = subprocess.Popen('rsync -av /etc/passwd /tmp'.split(), shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE) self.stdout, self.stderr = p.communicate()myclass = MyClass()myclass.start()myclass.join()print myclass.stdout
Here's a great implementation not using threads:constantly-print-subprocess-output-while-process-is-running
import subprocessdef execute(command): process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) output = '' # Poll process for new output until finished for line in iter(process.stdout.readline, ""): print line, output += line process.wait() exitCode = process.returncode if (exitCode == 0): return output else: raise Exception(command, exitCode, output)execute(['ping', 'localhost'])