U e5d ã@s6ddlZddlZddlmZdgZGdd„deƒZdS)éNé)ÚutilÚPopenc@s`eZdZdZdd„Zdd„Zejfdd„Zdd d „Z d d „Z d d„Z dd„Z dd„Z dd„ZdS)rÚforkcCs"t ¡d|_d|_| |¡dS©N)rZ_flush_std_streamsÚ returncodeÚ finalizerÚ_launch)ÚselfÚ process_obj©r ú2/usr/lib64/python3.8/multiprocessing/popen_fork.pyÚ__init__szPopen.__init__cCs|Srr )r Úfdr r r Úduplicate_for_childszPopen.duplicate_for_childc Cs€|jdkrzzt |j|¡\}}Wn(tk rH}z WY¢dSd}~XYnX||jkrzt |¡rnt |¡ |_n t |¡|_|jSr)rÚosÚwaitpidÚpidÚOSErrorÚ WIFSIGNALEDÚWTERMSIGÚ WEXITSTATUS)r ÚflagrÚstsÚer r r Úpolls    z Popen.pollNcCsN|jdkrH|dk r0ddlm}||jg|ƒs0dS| |dkrBtjnd¡S|jS)Nr)Úwaitg)rZmultiprocessing.connectionrÚsentinelrrÚWNOHANG)r Útimeoutrr r r r(s  z Popen.waitcCsZ|jdkrVzt |j|¡Wn8tk r0Yn&tk rT|jdddkrP‚YnXdS)Ngš™™™™™¹?)r)rrÚkillrÚProcessLookupErrorrr)r Zsigr r r Ú _send_signal2s zPopen._send_signalcCs| tj¡dSr)r"ÚsignalÚSIGTERM©r r r r Ú terminate<szPopen.terminatecCs| tj¡dSr)r"r#ÚSIGKILLr%r r r r ?sz Popen.killc Cs˜d}t ¡\}}t ¡\}}t ¡|_|jdkrdz$t |¡t |¡|j|d}W5t |¡Xn0t |¡t |¡t |tj ||f¡|_ ||_ dS)Nrr)Zparent_sentinel) rÚpiperrÚ_exitÚcloseÚ _bootstraprZFinalizeZ close_fdsrr)r r ÚcodeZparent_rZchild_wZchild_rZparent_wr r r r Bs          ÿz Popen._launchcCs|jdk r| ¡dSr)rr%r r r r*Us z Popen.close)N)Ú__name__Ú __module__Ú __qualname__Úmethodrrrrrrr"r&r r r*r r r r r s  )rr#ÚrÚ__all__Úobjectrr r r r Ús