3 \¤ã@sŠddlZddlZddlmZmZejs.edƒ‚ddlmZddlm Z ddlm Z ddlm Z d gZ Gd d „d e ƒZGd d „d e jƒZdS) éNé)Ú reductionÚset_spawning_popenz,No support for sending fds between processes)Ú forkserver)Ú popen_fork)Úspawn)ÚutilÚPopenc@seZdZdd„Zdd„ZdS)Ú_DupFdcCs ||_dS)N)Úind)Úselfr ©r ú8/usr/lib64/python3.6/multiprocessing/popen_forkserver.pyÚ__init__sz_DupFd.__init__cCstjƒ|jS)N)rZget_inherited_fdsr )r r r rÚdetachsz _DupFd.detachN)Ú__name__Ú __module__Ú __qualname__rrr r r rr sr csBeZdZdZeZ‡fdd„Zdd„Zdd„Ze j fdd „Z ‡Z S) r rcsg|_tƒj|ƒdS)N)Ú_fdsÚsuperr)r Ú process_obj)Ú __class__r rr!szPopen.__init__cCs|jj|ƒt|jƒdS)Nr)rÚappendÚlen)r Úfdr r rÚduplicate_for_child%s zPopen.duplicate_for_childcCs¤tj|jƒ}tjƒ}t|ƒztj||ƒtj||ƒWdtdƒXtj |j ƒ\|_ }t j |tj|j fƒt|ddd��}|j|jƒƒWdQRXtj|j ƒ|_dS)NÚwbT)Úclosefd)rZget_preparation_dataÚ_nameÚioÚBytesIOrrÚdumprZconnect_to_new_processrÚsentinelrZFinalizeÚosÚcloseÚopenÚwriteÚ getbufferÚ read_unsignedÚpid)r rZ prep_dataZbufÚwÚfr r rÚ_launch)s   z Popen._launchc Csr|jdkrlddlm}|tjkr$dnd}||jg|ƒs:dSytj|jƒ|_Wntt fk rjd|_YnX|jS)Nr)Úwaitéÿ) Ú returncodeZmultiprocessing.connectionr-r#ÚWNOHANGr"rr(ÚOSErrorÚEOFError)r Úflagr-Ztimeoutr r rÚpoll9s   z Popen.poll) rrrÚmethodr ZDupFdrrr,r#r0r4Ú __classcell__r r )rrr s  )rr#ÚcontextrrZHAVE_SEND_HANDLEÚ ImportErrorÚrrrrÚ__all__Úobjectr r r r r rÚs