a
    Šxd(
  ã                   @   sJ   d dl mZ 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 )é    )Úabsolute_importNé   )ÚTERM_SIGNALÚPopenc                   @   sT   e Zd 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S )r   ÚforkNc                 C   s(   t j ¡  t j ¡  d | _|  |¡ d S ©N)ÚsysÚstdoutÚflushÚstderrÚ
returncodeÚ_launch)ÚselfÚprocess_obj© r   úK/var/www/html/Ranjet/env/lib/python3.9/site-packages/billiard/popen_fork.pyÚ__init__   s    

zPopen.__init__c                 C   s   |S r   r   )r   Úfdr   r   r   Úduplicate_for_child   s    zPopen.duplicate_for_childc              
   C   s¨   | j d u r¢zt | j|¡\}}W qd ty^ } z&|jtjkrHW Y d }~q
W Y d }~d S d }~0 0 qdq
|| jkr¢t |¡rˆt |¡ | _ nt 	|¡s–J ‚t 
|¡| _ | j S r   )r   ÚosÚwaitpidÚpidÚOSErrorÚerrnoZEINTRÚWIFSIGNALEDÚWTERMSIGÚ	WIFEXITEDÚWEXITSTATUS)r   Úflagr   ÚstsÚer   r   r   Úpoll   s    


z
Popen.pollc                 C   sN   | j d u rH|d ur0ddlm} || jg|ƒs0d S |  |dkrBtjnd¡S | j S )Nr   )Úwaitg        r   )r   Ú
connectionr"   Úsentinelr!   r   ÚWNOHANG)r   Útimeoutr"   r   r   r   r"   2   s    
z
Popen.waitc              
   C   sj   | j d u rfzt | jt¡ W nH tyd } z0t|dd ƒtjkrP| j	ddd u rP‚ W Y d }~n
d }~0 0 d S )Nr   gš™™™™™¹?)r&   )
r   r   Úkillr   r   r   Úgetattrr   ZESRCHr"   )r   Úexcr   r   r   Ú	terminate<   s    
zPopen.terminatec              	   C   s‚   d}t  ¡ \}}t  ¡ | _| jdkrnz:t  |¡ dtjv rJdd l}| ¡  | 	¡ }W t  
|¡ q~t  
|¡ 0 nt  |¡ || _d S )Nr   r   Úrandom)r   Úpiper   r   Úcloser   Úmodulesr+   ÚseedÚ
_bootstrapÚ_exitr$   )r   r   ÚcodeZparent_rZchild_wr+   r   r   r   r   E   s    





zPopen._launchc                 C   s.   | j d ur*zt | j ¡ W d | _ nd | _ 0 d S r   )r$   r   r-   )r   r   r   r   r-   V   s    
zPopen.close)N)Ú__name__Ú
__module__Ú__qualname__Úmethodr$   r   r   r   r%   r!   r"   r*   r   r-   r   r   r   r   r      s   

	)
Ú
__future__r   r   r   r   Úcommonr   Ú__all__Úobjectr   r   r   r   r   Ú<module>   s   