There seems to be a problem with calling subprocesses from a script run 
with pythonw rather than python. The error doesn't seem to be a function 
of using pythonw.exe rather than python.exe in the Popen call, but we 
seem to get an error when pythonw is used to execute the script proc0.py

C:\Tmp>cat proc0.py
#proc0.py
import sys
from subprocess import Popen, PIPE
sys.stderr = sys.stdout = open('out.txt','w')
job = Popen('pythonw.exe -u proc1.py',stdout=PIPE,stderr=PIPE)
print 'pid',job.pid
out,err=job.communicate()
print 'out', out
print 'err', err
#end of proc0.py

C:\Tmp>cat proc1.py
#proc1.py
import sys, os
print 'sys.executable', sys.executable
print 'sys.argv', sys.argv
print 'stdout IN THE CHILD', os.getpid()
print >>sys.stderr, 'stderr IN THE CHILD', os.getpid()
#end of proc1

C:\Tmp>python proc0.py

C:\Tmp>cat out.txt
pid 1156
out sys.executable c:\python\pythonw.exe
sys.argv ['proc1.py']
stdout IN THE CHILD 1156

err stderr IN THE CHILD 1156


C:\Tmp>pythonw proc0.py

C:\Tmp>cat out.txt
Traceback (most recent call last):
   File "proc0.py", line 5, in ?
     job = Popen('pythonw.exe -u proc1.py',stdout=PIPE,stderr=PIPE)
   File "c:\python\lib\subprocess.py", line 549, in __init__
     (p2cread, p2cwrite,
   File "c:\python\lib\subprocess.py", line 609, in _get_handles
     p2cread = self._make_inheritable(p2cread)
   File "c:\python\lib\subprocess.py", line 650, in _make_inheritable
     DUPLICATE_SAME_ACCESS)
WindowsError: [Errno 6] The handle is invalid

C:\Tmp>
-- 
Robin Becker
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to