I am using Python and it’s subprocess library to check output from calls using strace, something in the matter of:
subprocess.check_output(["strace", str(processname)])
However, this only gives me the output after the called subprocess already finished, which is very limiting for my use-case.
I need a kind of “stream” or live-output from the process, so I need to read the output while the process is still running instead of only after it finished.
Is there a convenient way to achieve this using the subprocess library? I’m thinking of a kind of poll every x seconds, but did not find any hints regarding on how to implement this in the documentation.
Many thanks in advance.
Advertisement
Answer
Had some problems referencing the selected answer for streaming output from a test runner. The following worked better for me:
import subprocess from time import sleep def stream_process(process): go = process.poll() is None for line in process.stdout: print(line) return go process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while stream_process(process): sleep(0.1)