[ python-Bugs-1531862 ] subprocess.Popen(cmd, stdout=sys.stdout) fails
SourceForge.net
noreply at sourceforge.net
Wed Aug 16 06:16:08 CEST 2006
Bugs item #1531862, was opened at 2006-08-01 02:53
Message generated for change (Comment added) made by anthonybaxter
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1531862&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: Python Library
Group: Python 2.5
Status: Open
Resolution: None
Priority: 5
Submitted By: John A Meinel (jfmeinel)
Assigned to: Peter Åstrand (astrand)
Summary: subprocess.Popen(cmd, stdout=sys.stdout) fails
Initial Comment:
I'm currently using subprocess.Popen() to run a
command, and I allow the caller to specify where the
output should go.
One valid output is to send it to sys.stdout (fileno == 1)
The subprocess module seems to unconditionally close
stdout if a file handle is passed (even if it stdout).
Compare:
python -c "import subprocess,sys; \
subprocess.Popen(['echo', 'hello'])"
versus
python -c "import subprocess,sys; \
subprocess.Popen(['echo', 'hello'], stdout=sys.stdout)"
or even
python -c "import subprocess,sys; \
subprocess.Popen(['echo', 'hello'], stdout=1)"
The first one prints 'hello' as expected.
The latter two give an error:
echo: write error: Bad file descriptor
Attached is a possible patch to subprocess.py
----------------------------------------------------------------------
>Comment By: Anthony Baxter (anthonybaxter)
Date: 2006-08-16 14:16
Message:
Logged In: YES
user_id=29957
Making it check for particular FD numbers is a bad idea.
Instead, it should check that any FD that's being closed
isn't in the set
(sys.stdin.fileno(), sys.stdout.fileno(), sys.stderr.fileno())
----------------------------------------------------------------------
Comment By: Neal Norwitz (nnorwitz)
Date: 2006-08-16 14:11
Message:
Logged In: YES
user_id=33168
If stderr == stdout, this patch won't fix that, will it?
Shouldn't you add 1, 2 to the blacklist for stderr? (The
patch adds 2, I think 1 may also be required.)
----------------------------------------------------------------------
You can respond by visiting:
https://sourceforge.net/tracker/?func=detail&atid=105470&aid=1531862&group_id=5470
More information about the Python-bugs-list
mailing list