B
    È S]Z	  ã               @   s>   d dl Z d dlZd dlZddlmZ dgZG dd„ deƒZdS )é    Né   )ÚutilÚPopenc               @   s`   e Zd ZdZdd„ Zdd„ Zejfdd„Zdd	d
„Z	dd„ Z
dd„ Zdd„ Zdd„ Zdd„ ZdS )r   Úforkc             C   s"   t  ¡  d | _d | _|  |¡ d S )N)r   Z_flush_std_streamsÚ
returncodeÚ	finalizerÚ_launch)ÚselfÚprocess_obj© r   ú+lib/python3.7/multiprocessing/popen_fork.pyÚ__init__   s    zPopen.__init__c             C   s   |S )Nr   )r	   Úfdr   r   r   Úduplicate_for_child   s    zPopen.duplicate_for_childc          
   C   s’   | j d krŒyt | j|¡\}}W n" tk
rB } zd S d }~X Y nX || jkrŒt |¡rht |¡ | _ n$t |¡s€td 	|¡ƒ‚t 
|¡| _ | j S )NzStatus is {:n})r   ÚosÚwaitpidÚpidÚOSErrorÚWIFSIGNALEDÚWTERMSIGÚ	WIFEXITEDÚAssertionErrorÚformatÚWEXITSTATUS)r	   Úflagr   ÚstsÚer   r   r   Úpoll   s    


z
Popen.pollNc             C   sN   | j d krH|d k	r0ddlm} || jg|ƒs0d S |  |dkrBtjnd¡S | j S )Nr   )Úwaitg        )r   Zmultiprocessing.connectionr   Úsentinelr   r   ÚWNOHANG)r	   Útimeoutr   r   r   r   r   )   s    
z
Popen.waitc             C   sZ   | j d krVyt | j|¡ W n8 tk
r0   Y n& tk
rT   | jddd krP‚ Y nX d S )Ngš™™™™™¹?)r!   )r   r   Úkillr   ÚProcessLookupErrorr   r   )r	   Zsigr   r   r   Ú_send_signal3   s    
zPopen._send_signalc             C   s   |   tj¡ d S )N)r$   ÚsignalÚSIGTERM)r	   r   r   r   Ú	terminate=   s    zPopen.terminatec             C   s   |   tj¡ d S )N)r$   r%   ÚSIGKILL)r	   r   r   r   r"   @   s    z
Popen.killc          	   C   sr   d}t  ¡ \}}t  ¡ | _| jdkrJzt  |¡ | ¡ }W d t  |¡ X n$t  |¡ t | t j|f¡| _	|| _
d S )Nr   r   )r   Úpiper   r   ÚcloseÚ
_bootstrapÚ_exitr   ZFinalizer   r   )r	   r
   ÚcodeZparent_rZchild_wr   r   r   r   C   s    



zPopen._launchc             C   s   | j d k	r|   ¡  d S )N)r   )r	   r   r   r   r*   R   s    
zPopen.close)N)Ú__name__Ú
__module__Ú__qualname__Úmethodr   r   r   r    r   r   r$   r'   r"   r   r*   r   r   r   r   r      s   


)r   Úsysr%   Ú r   Ú__all__Úobjectr   r   r   r   r   Ú<module>   s
   