spawning a process with subprocess

bhunter brian.p.hunter at gmail.com
Mon Nov 26 11:54:40 EST 2007


Hi,

I've used subprocess with 2.4 several times to execute a process, wait
for it to finish, and then look at its output.  Now I want to spawn
the process separately, later check to see if it's finished, and if it
is look at its output.  I may want to send a signal at some point to
kill the process.  This seems straightforward, but it doesn't seem to
be working.

Here's my test case:

import subprocess, time

cmd = "cat somefile"
thread = subprocess.Popen(args=cmd.split(), shell=True,
stdout=subprocess.PIPE, stdin=subprocess.PIPE,
stderr=subprocess.STDOUT, close_fds=True)

while(1):
      time.sleep(1)
      if(thread.returncode):
         break
      else:
         print thread.returncode

print "returncode = ", thread.returncode
for line in thread.stdout:
   print "stdout:\t",line


This will just print the returncode of None forever until I Ctrl-C it.

Of course, the program works fine if I call thread.communicate(), but
since this waits for the process to finish, that's not what I want.

Any help would be appreciated.




More information about the Python-list mailing list