ìÕYf ã @ sW d d l Z d d l Z d d l Z d d l m Z d g Z Gd d „ d e ƒ Z d S)é Né )ÚutilÚPopenc @ sg e Z d Z d Z d d „ Z d d „ Z e j d d „ Z d d d
„ Z d d „ Z
d
d „ Z d S)r Úforkc C s4 t j j ƒ t j j ƒ d | _ | j | ƒ d S)N)ÚsysÚstdoutÚflushÚstderrÚ
returncodeÚ_launch)ÚselfÚprocess_obj© r ú?/opt/alt/python35/lib64/python3.5/multiprocessing/popen_fork.pyÚ__init__ s
zPopen.__init__c C s | S)Nr )r Úfdr r r Úduplicate_for_child s zPopen.duplicate_for_childc C sÄ | j d k r½ xP y t j | j | ƒ \ } } Wn) t k
r\ } z d SWYd d } ~ Xq XPq W| | j k r½ t j | ƒ r– t j | ƒ | _ n' t j | ƒ s« t ‚ t j | ƒ | _ | j S)N)
r
ÚosÚwaitpidÚpidÚOSErrorÚWIFSIGNALEDÚWTERMSIGÚ WIFEXITEDÚAssertionErrorÚWEXITSTATUS)r Zflagr ÚstsÚer r r Úpoll s z
Popen.pollNc C sm | j d k rf | d k rD d d l m } | | j g | ƒ sD d S| j | d k r_ t j n d ƒ S| j S)Nr )Úwaitg )r
Zmultiprocessing.connectionr Úsentinelr r ÚWNOHANG)r Útimeoutr r r r r , s "z
Popen.waitc C sn | j d k rj y t j | j t j ƒ Wn> t k
r= Yn- t k
ri | j d d ƒ d k re ‚ Yn Xd S)Nr" gš™™™™™¹?) r
r Úkillr ÚsignalÚSIGTERMÚProcessLookupErrorr r )r r r r Ú terminate6 s
zPopen.terminatec C s¿ d } t j ƒ \ } } t j ƒ | _ | j d k rŒ zB t j | ƒ d t j k rk d d l } | j ƒ | j ƒ } Wd t j
| ƒ Xn/ t j | ƒ t j | t j | f ƒ | | _
d S)Nr r Úrandom)r Úpiper r Úcloser Úmodulesr( ZseedÚ
_bootstrapÚ_exitr ZFinalizer )r r
ÚcodeZparent_rZchild_wr( r r r r @ s
z
Popen._launch)Ú__name__Ú
__module__Ú__qualname__Úmethodr r r r! r r r' r r r r r r
s
)r r r$ Ú r Ú__all__Úobjectr r r r r Ú