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€|jdkrzx>ytj|j|ƒ\}}Wn tk rB}zdSd}~Xq XPq W||jkrztj|ƒrntj|ƒ |_n tj|ƒ|_|jS)N)rÚosÚwaitpidÚpidÚOSErrorÚ WIFSIGNALEDÚWTERMSIGÚ 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