
Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­Â�Â­
<!DOCTYPE html>
<html>
U
    ¡ê,a¶  ã                   @   sŠ   d dl Z d dlZddlmZmZ ejs.edƒ‚ddlmZ ddlm	Z	 ddlm
Z
 ddlmZ d	gZG d
d„ deƒZG dd	„ d	e	jƒZdS )é    Né   )Ú	reductionÚset_spawning_popenz,No support for sending fds between processes)Ú
forkserver)Ú
popen_fork)Úspawn)ÚutilÚPopenc                   @   s   e Zd Zdd„ Zdd„ ZdS )Ú_DupFdc                 C   s
   || _ d S ©N)Úind)Úselfr   © r   úE/opt/alt/python38/lib64/python3.8/multiprocessing/popen_forkserver.pyÚ__init__   s    z_DupFd.__init__c                 C   s   t  ¡ | j S r   )r   Zget_inherited_fdsr   )r   r   r   r   Údetach   s    z_DupFd.detachN)Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r   r   r
      s   r
   c                       sB   e Zd ZdZeZ‡ fdd„Zdd„ Zdd„ Ze	j
fdd	„Z‡  ZS )
r	   r   c                    s   g | _ tƒ  |¡ d S r   )Ú_fdsÚsuperr   )r   Úprocess_obj©Ú	__class__r   r   r   !   s    zPopen.__init__c                 C   s   | j  |¡ t| j ƒd S )Nr   )r   ÚappendÚlen)r   Úfdr   r   r   Úduplicate_for_child%   s    zPopen.duplicate_for_childc              	   C   s²   t  |j¡}t ¡ }t| ƒ zt ||¡ t ||¡ W 5 td ƒ X t 	| j
¡\| _}t |¡}t | tj|| jf¡| _t|ddd��}| | ¡ ¡ W 5 Q R X t | j¡| _d S )NÚwbT)Úclosefd)r   Zget_preparation_dataÚ_nameÚioÚBytesIOr   r   Údumpr   Zconnect_to_new_processr   ÚsentinelÚosÚdupr   ZFinalizeZ	close_fdsÚ	finalizerÚopenÚwriteÚ	getbufferÚread_signedÚpid)r   r   Z	prep_dataZbufÚwZ	_parent_wÚfr   r   r   Ú_launch)   s    


ÿzPopen._launchc              	   C   sr   | j d krlddlm} |tjkr$dnd }|| jg|ƒs:d S zt | j¡| _ W n tt	fk
rj   d| _ Y nX | j S )Nr   )Úwaitéÿ   )
Ú
returncodeZmultiprocessing.connectionr0   r%   ÚWNOHANGr$   r   r+   ÚOSErrorÚEOFError)r   Úflagr0   Ztimeoutr   r   r   Úpoll=   s    
z
Popen.poll)r   r   r   Úmethodr
   ZDupFdr   r   r/   r%   r3   r7   Ú__classcell__r   r   r   r   r	      s   )r!   r%   Úcontextr   r   ZHAVE_SEND_HANDLEÚImportErrorÚ r   r   r   r   Ú__all__Úobjectr
   r	   r   r   r   r   Ú<module>   s   
