Issue 14737: subprocess.Popen pipes not working (original) (raw)

Attempting to read from stdout of a running process seems broken on Python3.2. I've been able to reproduce this on Ubuntu 11.4 and Windows 7 (with /bin/sh installed as part of git for windows)

Python 3.2 (r32:88445, Dec 8 2011, 15:26:51) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.

from subprocess import Popen, PIPE p=Popen(["/bin/sh"], stdin=PIPE, stderr=PIPE, stdout=PIPE) p.stdin.write(b"echo hello\n") 11 p.stdout.readline()

from subprocess import Popen, PIPE p=Popen(["/bin/sh"], stdin=PIPE, stderr=PIPE, stdout=PIPE) p.stdin.write(b"echo hello\n") 11 p.stdout.read(2)

For comparison, on python 2.7 (again, linux and windows: Python 2.7.1+ (r271:86832, Apr 11 2011, 18:05:24) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.

from subprocess import Popen, PIPE p=Popen(["/bin/sh"], stdin=PIPE, stderr=PIPE, stdout=PIPE) p.stdin.write(b"echo hello\n") p.stdout.readline() 'hello\n'

Works with 3.2.2:

Python 3.2.2+ (3.2:9ef20fbd340f, Oct 15 2011, 21:22:07) [GCC 4.5.2] on linux2 Type "help", "copyright", "credits" or "license" for more information.

from subprocess import Popen, PIPE p=Popen(["/bin/sh"], stdin=PIPE, stderr=PIPE, stdout=PIPE) p.stdin.write(b"echo hello\n") 11 p.stdout.readline() b'hello\n'

Try calling p.stdin.flush() perhaps?