Index: Lib/subprocess.py =================================================================== --- Lib/subprocess.py (revision 88499) +++ Lib/subprocess.py (working copy) @@ -1065,11 +1065,16 @@ def _close_fds(self, but): + maxfd = MAX_FD + try: + maxfd = os.dup(0) + 1 + except: + pass if hasattr(os, 'closerange'): os.closerange(3, but) - os.closerange(but + 1, MAXFD) + os.closerange(but + 1, maxfd) else: - for i in xrange(3, MAXFD): + for i in xrange(3, maxfd): if i == but: continue try: Index: Lib/popen2.py =================================================================== --- Lib/popen2.py (revision 88499) +++ Lib/popen2.py (working copy) @@ -82,8 +82,13 @@ def _run_child(self, cmd): if isinstance(cmd, basestring): cmd = ['/bin/sh', '-c', cmd] - os.closerange(3, MAXFD) + maxfd = MAXFD try: + maxfd = os.dup(0) + 1 + except: + pass + os.closerange(3, maxfd) + try: os.execvp(cmd[0], cmd) finally: os._exit(1)