o [dI @s6ddlZddlZddlmZdgZGdddeZdS)N)utilPopenc@s`eZdZdZddZddZejfddZdd d Z d d Z d dZ ddZ ddZ ddZdS)rforkcCs"td|_d|_||dSN)r_flush_std_streams returncode finalizer_launch)self process_objr 1/usr/lib/python3.10/multiprocessing/popen_fork.py__init__szPopen.__init__cCs|Srr )r fdr r rduplicate_for_childszPopen.duplicate_for_childcCsR|jdur&z t|j|\}}Wn tyYdSw||jkr&t||_|jSr)roswaitpidpidOSErrorwaitstatus_to_exitcode)r flagrstsr r rpolls    z Popen.pollNcCsP|jdur%|durddlm}||jg|sdS||dkr"tjSdS|jS)Nr)waitg)rmultiprocessing.connectionrsentinelrrWNOHANG)r timeoutrr r rr$s  z Popen.waitcCs\|jdur,z t|j|WdStyYdSty+|jdddur(YdSwdS)Ng?)r)rrkillrProcessLookupErrorrr)r sigr r r _send_signal.s   zPopen._send_signalcC|tjdSr)r"signalSIGTERMr r r r terminate8zPopen.terminatecCr#r)r"r$SIGKILLr&r r rr;r(z Popen.killc Csd}t\}}t\}}t|_|jdkr7zt|t||j|d}Wt|dSt|wt|t|t|tj ||f|_ ||_ dS)Nrr)parent_sentinel) rpiperrclose _bootstrap_exitrFinalize close_fdsr r)r r codeparent_rchild_wchild_rparent_wr r rr >s           z Popen._launchcCs|jdur |dSdSr)r r&r r rr,Qs  z Popen.closer)__name__ __module__ __qualname__methodrrrrrrr"r'rr r,r r r rr s    )rr$r__all__objectrr r r rs