• Segev Finer's avatar
    bpo-19764: Implemented support for subprocess.Popen(close_fds=True) on Windows (#1218) · b2a6083e
    Segev Finer yazdı
    Even though Python marks any handles it opens as non-inheritable there
    is still a race when using `subprocess.Popen` since creating a process
    with redirected stdio requires temporarily creating inheritable handles.
    By implementing support for `subprocess.Popen(close_fds=True)` we fix
    this race.
    
    In order to implement this we use PROC_THREAD_ATTRIBUTE_HANDLE_LIST
    which is available since Windows Vista. Which allows to pass an explicit
    list of handles to inherit when creating a process.
    
    This commit also adds `STARTUPINFO.lpAttributeList["handle_list"]`
    which can be used to control PROC_THREAD_ATTRIBUTE_HANDLE_LIST
    directly.
    b2a6083e
subprocess.py 64.2 KB