3
�
�^� c @ s� d dl Z d dlZddlmZmZ ejs.ed��ddlmZ ddlm Z ddlm
Z
ddlmZ d gZG d
d� de
�ZG dd � d e j�ZdS )
� N� )� reduction�set_spawning_popenz,No support for sending fds between processes)�
forkserver)�
popen_fork)�spawn)�util�Popenc @ s e Zd Zdd� Zdd� ZdS )�_DupFdc C s
|| _ d S �N)�ind)�selfr � r
�8/usr/lib64/python3.6/multiprocessing/popen_forkserver.py�__init__ � z_DupFd.__init__c C s t j� | j S r
)r Zget_inherited_fdsr )r r
r
r �detach r z
_DupFd.detachN)�__name__�
__module__�__qualname__r r r
r
r
r r s r c sB e Zd ZdZeZ� fdd�Zdd� Zdd� Ze j
fdd �Z� ZS )
r r c s g | _ t� j|� d S r
)�_fdsZsuperr )r �process_obj�Z __class__r
r r ! s zPopen.__init__c C s | j j|� t| j �d S )Nr )r ZappendZlen)r Zfdr
r
r �duplicate_for_child% s zPopen.duplicate_for_childc C s� t j|j�}tj� }t| � ztj||� tj||� W d td � X tj | j
�\| _}tj
| tj| jf� t|ddd��}|j|j� � W d Q R X tj| j�| _d S )NZwbT)Zclosefd)r Zget_preparation_dataZ_name�ioZBytesIOr r Zdumpr Zconnect_to_new_processr �sentinelr ZFinalize�osZcloseZopenZwriteZ getbuffer�
read_unsignedZpid)r r Z prep_dataZbufZwZfr
r
r �_launch) s
z
Popen._launchc C sr | j d krlddlm} |tjkr$dnd }|| jg|�s:d S ytj| j�| _ W n tt fk
rj d| _ Y nX | j S )Nr )�waiti� )
Z
returncodeZmultiprocessing.connectionr r �WNOHANGr r r ZOSErrorZEOFError)r Zflagr Ztimeoutr
r
r �poll9 s
z
Popen.poll)
r r r Zmethodr ZDupFdr r r r r r Z
__classcell__r
r
r r r s )r r Zcontextr r ZHAVE_SEND_HANDLEZImportErrorZ r r r r Z__all__Zobjectr r r
r
r
r Z<module> s