[Patches] [ python-Patches-1603907 ] subprocess: error redirecting i/o from non-console process
SourceForge.net
noreply at sourceforge.net
Sun Jan 7 11:58:43 CET 2007
Patches item #1603907, was opened at 2006-11-27 18:20
Message generated for change (Comment added) made by astrand
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1603907&group_id=5470
Please note that this message will contain a full copy of the comment thread,
including the initial issue submission, for this request,
not just the latest update.
Category: Library (Lib)
Group: Python 2.6
Status: Open
Resolution: None
Priority: 5
Private: No
Submitted By: Oren Tirosh (orenti)
Assigned to: Peter Åstrand (astrand)
Summary: subprocess: error redirecting i/o from non-console process
Initial Comment:
In IDLE, PythonWin or other non-console interactive Python under Windows:
>>> from subprocess import *
>>> Popen('cmd', stdout=PIPE)
Traceback (most recent call last):
File "<pyshell#11>", line 1, in -toplevel-
Popen('', stdout=PIPE)
File "C:\python24\lib\subprocess.py", line 533, in __init__
(p2cread, p2cwrite,
File "C:\python24\lib\subprocess.py", line 593, in _get_handles
p2cread = self._make_inheritable(p2cread)
File "C:\python24\lib\subprocess.py", line 634, in _make_inheritable
DUPLICATE_SAME_ACCESS)
TypeError: an integer is required
The same command in a console windows is successful.
Why it happens:
subprocess assumes that GetStdHandle always succeeds but when there is no console it returns None. DuplicateHandle then complains about getting a non-integer. This problem does not happen when redirecting all three standard handles.
Solution:
Replace None with -1 (INVALID_HANDLE_VALUE) in _make_inheritable.
Patch attached.
----------------------------------------------------------------------
>Comment By: Peter Åstrand (astrand)
Date: 2007-01-07 11:58
Message:
Logged In: YES
user_id=344921
Originator: NO
This patch looks very interesting. However, it feels a little bit strange
to call DuplicateHandle with a handle of -1. Is this really allowed? What
will DuplicateHandle return in this case? INVALID_HANDLE_VALUE? In that
case, isn't it better to return INVALID_HANDLE_VALUE directly?
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=305470&aid=1603907&group_id=5470
More information about the Patches
mailing list