Правильный способ закрыть все файлы после подпроцесса Popen и общаться

У нас возникли некоторые проблемы из-за страшного «слишком большого количества открытых файлов» на нашей машине с Ubuntu Linux, работающей с приложением Python Twisted. Во многих местах нашей программы мы используем подпроцесс Popen, что-то вроде этого:

Popen('ifconfig ' + iface, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT, close_fds=True)
output = process.stdout.read()

в то время как в других местах мы используем подпроцесс связи:

process = subprocess.Popen(['/usr/bin/env', 'python', self._get_script_path(script_name)],
                       stdin=subprocess.PIPE,
                       stdout=subprocess.PIPE,
                       close_fds=True)
out, err = process.communicate(data)

Что именно мне нужно сделать в обоих случаях, чтобы закрыть дескрипторы открытых файлов? Документация Python по этому вопросу не ясна. Исходя из того, что я понял (что может быть неправильно), как connect (), так и wait () действительно очистят любые открытые fds самостоятельно. Но как насчет Попена? Нужно ли закрывать stdin, stdout и stderr явным образом после вызова Popen, если я не звоню общаться или ждать?

Ответы на вопрос(2)

Ваш ответ на вопрос