I'm using the following command to run a shell command (creating a subprocess):
cmd = "ls"
process = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True)
Then, I want to get its return code when it's finished. I should use wait()
or poll()
? It seems to me wait()
is equal to a poll()
enclosed in a busy wait. Something like:
while process.poll() == None:
time.sleep(0.5)
I read that wait()
could generate a deadlock if stdout/stderr
buffer is filled. process.poll()
used like above also could generate a deadlock? If this is true,
I should use process.comunicate()
to solve the problem? Nowadays, I only use
process.comunicate()
when I'm interested in the subprocess stdout/stderr
.
Thanks in advance.