U if @ sp d dl Z d dlZddlmZmZ ddlmZ ddlmZ ddlmZ dgZ G dd d e ZG d d dejZdS ) N ) reductionset_spawning_popen) popen_fork)spawn)utilPopenc @ s e Zd Zdd Zdd ZdS )_DupFdc C s || _ d S Nfdselfr r F/opt/alt/python38/lib64/python3.8/multiprocessing/popen_spawn_posix.py__init__ s z_DupFd.__init__c C s | j S r r )r r r r detach s z _DupFd.detachN)__name__ __module____qualname__r r r r r r r s r c s4 e Zd ZdZeZ fddZdd Zdd Z Z S )r r c s g | _ t | d S r )_fdssuperr )r process_obj __class__r r r s zPopen.__init__c C s | j | |S r )r appendr r r r duplicate_for_child" s zPopen.duplicate_for_childc C sX ddl m} | }| j| t|j}t }t | zt|| t|| W 5 t d X d } } }} z~t \}}t \}} tj||d}| j||g t t || j| _|| _t| ddd} | | W 5 Q R X W 5 g } || fD ]}|d k r | | q t | t j| | _||fD ]}|d k r6t| q6X d S )Nr )resource_tracker) tracker_fdZpipe_handlewbF)closefd) r Zgetfdr r r Zget_preparation_data_nameioBytesIOr r dumpr ZFinalizeZ close_fds finalizerosclosepipeZget_command_lineextendZspawnv_passfdsZget_executablepidsentinelopenwrite getbuffer)r r r r Z prep_datafpZparent_rZchild_wZchild_rZparent_wZfds_to_closer cmdfr r r _launch&