a XC?hI �@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 �?/opt/alt/python39/lib64/python3.9/multiprocessing/popen_fork.py�__init__szPopen.__init__cCs|Srr )r �fdr r r �duplicate_for_childszPopen.duplicate_for_childcCsR|jdurLzt�|j|�\}}Wnty4YdS0||jkrLt�|�|_|jSr)r�os�waitpid�pid�OSError�waitstatus_to_exitcode)r �flagr�stsr r r �polls    z Popen.pollNcCsN|jdurH|dur0ddlm}||jg|�s0dS|�|dkrBtjnd�S|jS)Nr)�waitg)rZmultiprocessing.connectionr�sentinelrr�WNOHANG)r �timeoutrr r r r$s  z Popen.waitcCsV|jdurRzt�|j|�Wn4ty.Yn$tyP|jdd�durL�Yn0dS)Ng�������?)r)rr�killr�ProcessLookupErrorrr)r Zsigr r r � _send_signal.s   zPopen._send_signalcCs|�tj�dSr)r�signal�SIGTERM�r r r r � terminate8szPopen.terminatecCs|�tj�dSr)rr �SIGKILLr"r r r r;sz Popen.killc Cs�d}t��\}}t��\}}t��|_|jdkrnz.t�|�t�|�|j|d�}Wt�|�q�t�|�0n0t�|�t�|�t�|tj ||f�|_ ||_ dS)Nrr)Zparent_sentinel) r�piperr�close� _bootstrap�_exitrZFinalizeZ close_fdsrr)r r �codeZparent_rZchild_wZchild_rZparent_wr r r r >s          �z Popen._launchcCs|jdur|��dSr)rr"r r r r&Qs z Popen.close)N)�__name__� __module__� __qualname__�methodrrrrrrrr#rr r&r r r r r s  )rr �r�__all__�objectrr r r r �s