]{ @ s d d l Z d d l Z d d l m Z d d l m Z d d l m Z d d l m Z d d l m Z d g Z Gd d
d
e Z
Gd d d e j Z d S) N )context)
popen_fork) reduction)spawn)utilPopenc @ s( e Z d Z d d Z d d Z d S)_DupFdc C s
| | _ d S)N)fd)selfr
r 6/opt/alt/python35/lib64/python3.5/popen_spawn_posix.py__init__ s z_DupFd.__init__c C s | j S)N)r
)r r r r
detach s z
_DupFd.detachN)__name__
__module____qualname__r r r r r r
r s r c sF e Z d Z d Z e Z f d d Z d d Z d d Z S)r r c s g | _ t j | d S)N)_fdssuperr )r process_obj) __class__r r
r s zPopen.__init__c C s | j j | | S)N)r append)r r
r r r
duplicate_for_child# s zPopen.duplicate_for_childc
C s d d l m } | j } | j j | t j | j } t j } t
j | z$ t j
| | t j
| | Wd t
j d Xd } } } } z t j \ } } t j \ } } t j d | d | }
| j j | | g t j t j |
| j | _ | | _ t | d d d } | j | j Wd QRXWd | d k rxt j | t j | f x0 | | | f D] } | d k rt j | qWXd S)Nr )semaphore_tracker
tracker_fdZpipe_handlewbclosefdF) r Zgetfdr r r Zget_preparation_data_nameioBytesIOr set_spawning_popenr dumpospipeZget_command_lineextendr spawnv_passfdsZget_executablepidsentinelopenwrite getbufferFinalizeclose)
r r r r Z prep_datafpZparent_rZchild_wZchild_rZparent_wcmdfr
r r r
_launch' s6
z
Popen._launch) r r r methodr DupFdr r r1 r r )r r
r s
)r r# r r r r r r __all__objectr r r r r r