a XC?h��@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�E/opt/alt/python39/lib64/python3.9/multiprocessing/popen_forkserver.py�__init__sz_DupFd.__init__cCst��|jSr )rZget_inherited_fdsr )r rrr�detachsz _DupFd.detachN)�__name__� __module__� __qualname__rrrrrrr sr csBeZdZdZeZ�fdd�Zdd�Zdd�Ze j fdd �Z �Z S) r rcsg|_t��|�dSr )�_fds�superr)r � process_obj�� __class__rrr!szPopen.__init__cCs|j�|�t|j�dS)Nr)r�append�len)r �fdrrr�duplicate_for_child%s zPopen.duplicate_for_childcCs�t�|j�}t��}t|�z$t�||�t�||�Wtd�n td�0t� |j �\|_ }t � |�}t�|tj||j f�|_t|ddd��}|�|���Wd�n1s�0Yt�|j �|_dS)N�wbT)�closefd)rZget_preparation_data�_name�io�BytesIOrr�dumprZconnect_to_new_processr�sentinel�os�duprZFinalizeZ close_fds� finalizer�open�write� getbuffer� read_signed�pid)r rZ prep_dataZbuf�wZ _parent_w�frrr�_launch)s    �,z Popen._launchc Csp|jdurjddlm}|tjkr$dnd}||jg|�s:dSzt�|j�|_Wntt fyhd|_Yn0|jS)Nr)�wait��) � returncodeZmultiprocessing.connectionr0r%�WNOHANGr$rr+�OSError�EOFError)r �flagr0Ztimeoutrrr�poll=s   z Popen.poll) rrr�methodr ZDupFdrrr/r%r3r7� __classcell__rrrrr s  )r!r%�contextrrZHAVE_SEND_HANDLE� ImportError�rrrr�__all__�objectr r rrrr�s