From da286666b24e31a6ec16964963aaa3a83bcad751 Mon Sep 17 00:00:00 2001 From: Guido van Rossum Date: Mon, 29 Sep 1997 04:04:39 +0000 Subject: Add optional bufsize argument to various calls so we can make the os.fdopen() calls unbuffered. I presume that it's enough if we can make all three of them (for stdin, stdout, and stderr) unbuffered and don't need to specify different buffer sizes per file -- that would complicate the interface more than I care for. --- Lib/popen2.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/Lib/popen2.py b/Lib/popen2.py index b5defbc..d62f6a9 100644 --- a/Lib/popen2.py +++ b/Lib/popen2.py @@ -11,7 +11,7 @@ def _cleanup(): inst.poll() class Popen3: - def __init__(self, cmd, capturestderr=0): + def __init__(self, cmd, capturestderr=0, bufsize=-1): if type(cmd) == type(''): cmd = ['/bin/sh', '-c', cmd] p2cread, p2cwrite = os.pipe() @@ -41,12 +41,12 @@ class Popen3: # Shouldn't come here, I guess os._exit(1) os.close(p2cread) - self.tochild = os.fdopen(p2cwrite, 'w') + self.tochild = os.fdopen(p2cwrite, 'w', bufsize) os.close(c2pwrite) - self.fromchild = os.fdopen(c2pread, 'r') + self.fromchild = os.fdopen(c2pread, 'r', bufsize) if capturestderr: os.close(errin) - self.childerr = os.fdopen(errout, 'r') + self.childerr = os.fdopen(errout, 'r', bufsize) else: self.childerr = None self.sts = -1 # Child not completed yet @@ -68,14 +68,14 @@ class Popen3: _active.remove(self) return self.sts -def popen2(cmd): +def popen2(cmd, bufsize=-1): _cleanup() - inst = Popen3(cmd, 0) + inst = Popen3(cmd, 0, bufsize) return inst.fromchild, inst.tochild -def popen3(cmd): +def popen3(cmd, bufsize=-1): _cleanup() - inst = Popen3(cmd, 1) + inst = Popen3(cmd, 1, bufsize) return inst.fromchild, inst.tochild, inst.childerr def _test(): -- cgit v0.12