Python Glossary English

все 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Сообщить о неточности