ìÕYf ã@sWddlZddlZddlZddlmZdgZGdd„deƒZdS)éNé)ÚutilÚPopenc@sgeZdZdZdd„Zdd„Zejdd„Zdd d „Z d d „Z d d„Z dS)rÚforkcCs4tjjƒtjjƒd|_|j|ƒdS)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__cCs|S)Nr)r ÚfdrrrÚduplicate_for_childszPopen.duplicate_for_childcCsÄ|jdkr½xPytj|j|ƒ\}}Wn)tk r\}z dSWYdd}~XqXPqW||jkr½tj|ƒr–tj|ƒ |_n'tj|ƒs«t‚tj |ƒ|_|jS)N) r ÚosÚwaitpidÚpidÚOSErrorÚ WIFSIGNALEDÚWTERMSIGÚ WIFEXITEDÚAssertionErrorÚ WEXITSTATUS)r ZflagrÚstsÚerrrÚpollsz Popen.pollNcCsm|jdkrf|dk rDddlm}||jg|ƒsDdS|j|dkr_tjndƒS|jS)Nr)Úwaitg)r Zmultiprocessing.connectionrÚsentinelrrÚWNOHANG)r Útimeoutrrrrr,s "z Popen.waitc Csn|jdkrjytj|jtjƒWn>tk r=Yn-tk ri|jddƒdkre‚YnXdS)Nr"gš™™™™™¹?) r rÚkillrÚsignalÚSIGTERMÚProcessLookupErrorrr)r rrrÚ terminate6s  zPopen.terminatec Cs¿d}tjƒ\}}tjƒ|_|jdkrŒzBtj|ƒdtjkrkddl}|jƒ|j ƒ}Wdtj |ƒXn/tj|ƒt j |tj|fƒ||_ dS)NrrÚrandom)rÚpiperrÚcloserÚmodulesr(ZseedÚ _bootstrapÚ_exitrZFinalizer )r r ÚcodeZparent_rZchild_wr(rrrr @s    z Popen._launch) Ú__name__Ú __module__Ú __qualname__Úmethodrrrr!rrr'r rrrrr s    )rrr$ÚrÚ__all__ÚobjectrrrrrÚs