compat/ssubprocess.py: some python versions don't have os.closerange().

Like python2.5 on Debian.  It might be a MacOS extension or something.  So
much for the comment in subprocess.py that said "keep this compatible with
python 2.2."
This commit is contained in:
Avery Pennarun 2010-10-01 18:40:53 -07:00
parent 76d576a375
commit 52fbb2ebbe

View File

@ -531,6 +531,17 @@ def list2cmdline(seq):
return ''.join(result) return ''.join(result)
def _closerange(start, max):
try:
os.closerange(start, max)
except AttributeError:
for i in xrange(start, max):
try:
os.close(i)
except:
pass
class Popen(object): class Popen(object):
def __init__(self, args, bufsize=0, executable=None, def __init__(self, args, bufsize=0, executable=None,
stdin=None, stdout=None, stderr=None, stdin=None, stdout=None, stderr=None,
@ -989,8 +1000,8 @@ class Popen(object):
def _close_fds(self, but): def _close_fds(self, but):
os.closerange(3, but) _closerange(3, but)
os.closerange(but + 1, MAXFD) _closerange(but + 1, MAXFD)
def _execute_child(self, args, executable, preexec_fn, close_fds, def _execute_child(self, args, executable, preexec_fn, close_fds,