все Python 3osфункция
os.closerange
os — файловые дескрипторы
Закрывает все дескрипторы в диапазоне [fd_low, fd_high), игнорируя ошибки.
Синтаксис
os.closerange(fd_low, fd_high)
Ошибки закрытия молча игнорируются, поэтому функцию применяют в дочернем процессе после fork, чтобы не унаследовать лишние дескрипторы. Верхняя граница не входит в диапазон. В обычном коде она почти не нужна: subprocess по умолчанию закрывает лишние дескрипторы сам (close_fds=True).
Примеры
import os
r, w = os.pipe() # → два дескриптора одного канала, например 3 и 4
os.closerange(r, w + 1) # → закрывает и r, и w: верхняя граница не входит в диапазон; тем же приёмом закрывают унаследованные fd перед exec
os.close(r) # → OSError: [Errno 9] Bad file descriptor — дескриптор уже закрыт
os.closerange(r, w + 1) # → повторный вызов не падает: ошибки закрытия молча игнорируются
os.closerange(w, w) # → пустой диапазон [w, w): не закрывает ничего
См. также
Открыть в полном глоссарииdocs.python.orgСообщить о неточности