Python 3.4+Windowsosфункция
os.set_handle_inheritable()
os — файловые дескрипторы
Задаёт флаг наследуемости дескриптора Windows (HANDLE) дочерними процессами; доступна только на Windows, для обычных fd используйте os.set_inheritable().
Синтаксис
os.set_handle_inheritable(handle, inheritable, /)
Меняет флаг наследования у хендла Windows, а не у номера дескриптора C. С Python 3.4 создаваемые хендлы по умолчанию не наследуются, и эта функция нужна, чтобы явно отдать хендл дочернему процессу. Помните, что наследуются все помеченные хендлы — в subprocess для точечной передачи есть STARTUPINFO.lpAttributeList с handle_list.
Примеры
import os
print(hasattr(os, 'set_handle_inheritable') == (os.name == 'nt')) # → True (функция есть только на Windows)
if os.name == 'nt':
import msvcrt
fd = os.open(os.devnull, os.O_RDONLY)
os.set_handle_inheritable(msvcrt.get_osfhandle(fd), True) # разрешить наследование хендла
os.close(fd)
r, w = os.pipe()
os.set_inheritable(r, True) # кроссплатформенный аналог для обычных fd
print(os.get_inheritable(r)) # → True
os.close(r); os.close(w)
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности