3 \ ã@s>ddlZddlZddlZddlmZdgZGdd„deƒZdS)éNé)ÚutilÚPopenc@sHeZdZdZdd„Zdd„Zejfdd„Zdd d „Z d d „Z d d„Z dS)rÚforkcCstjƒd|_|j|ƒdS)N)rZ_flush_std_streamsÚ returncodeÚ_launch)ÚselfÚ process_obj©r ú2/usr/lib64/python3.6/multiprocessing/popen_fork.pyÚ__init__szPopen.__init__cCs|S)Nr )rÚfdr r r Úduplicate_for_childszPopen.duplicate_for_childcCsŽ|jdkrˆx>ytj|j|ƒ\}}Wn tk rB}zdSd}~Xq XPq W||jkrˆtj|ƒrntj|ƒ |_ntj|ƒs|t‚tj |ƒ|_|jS)N) rÚosÚwaitpidÚpidÚOSErrorÚ WIFSIGNALEDÚWTERMSIGÚ WIFEXITEDÚAssertionErrorÚ WEXITSTATUS)rÚflagrÚstsÚer r r Úpolls    z Popen.pollNcCsN|jdkrH|dk r0ddlm}||jg|ƒs0dS|j|dkrBtjndƒS|jS)Nr)Úwaitg)rZmultiprocessing.connectionrÚsentinelrrÚWNOHANG)rÚtimeoutrr r r r+s  z Popen.waitc Cs\|jdkrXytj|jtjƒWn8tk r2Yn&tk rV|jdd�dkrR‚YnXdS)Ngš™™™™™¹?)r) rrÚkillrÚsignalÚSIGTERMÚProcessLookupErrorrr)rr r r Ú terminate5s zPopen.terminatec CsŠd}tjƒ\}}tjƒ|_|jdkrdz0tj|ƒdtjkrJddl}|jƒ|j ƒ}Wdtj |ƒXn"tj|ƒt j |tj|fƒ||_ dS)NrrÚrandom)rÚpiperrÚcloseÚsysÚmodulesr%ZseedÚ _bootstrapÚ_exitrZFinalizer)rr ÚcodeZparent_rZchild_wr%r r r r?s       z Popen._launch)N) Ú__name__Ú __module__Ú __qualname__Úmethodr rrrrrr$rr r r r r s  )rr(r!ÚrÚ__all__Úobjectrr r r r Ús