o
    svXj(
  ã                   @   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   úP/var/www/html/myproject/venv/lib/python3.10/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 rS	 zt | j|¡\}}W n ty0 } z|jtjkr%W Y d }~qW Y d }~d S d }~ww 	 || jkrSt |¡rFt |¡ | _ | j S t 	|¡sMJ ‚t 
|¡| _ | j S r   )r   ÚosÚwaitpidÚpidÚOSErrorÚerrnoÚEINTRÚWIFSIGNALEDÚWTERMSIGÚ	WIFEXITEDÚWEXITSTATUS)r   Úflagr   ÚstsÚer   r   r   Úpoll   s$   
€û

þz
Popen.pollc                 C   sP   | j d u r%|d urddlm} || jg|ƒsd S |  |dkr"tj¡S d¡S | j S )Nr   )Úwaitg        r   )r   Ú
connectionr#   Úsentinelr"   r   ÚWNOHANG)r   Útimeoutr#   r   r   r   r#   2   s   
z
Popen.waitc              
   C   s|   | j d u r<z
t | jt¡ W d S  ty; } z t|dd ƒtjkr)| j	dd�d u r0‚ W Y d }~d S W Y d }~d S d }~ww d S )Nr   gš™™™™™¹?)r'   )
r   r   Úkillr   r   r   Úgetattrr   ÚESRCHr#   )r   Úexcr   r   r   Ú	terminate<   s   
þ€þýzPopen.terminatec              	   C   s‚   d}t  ¡ \}}t  ¡ | _| jdkr7zt  |¡ dtjv r%dd l}| ¡  | 	¡ }W t  
|¡ d S t  
|¡ w t  |¡ || _d S )Nr   r   Úrandom)r   Úpiper   r   Úcloser   Úmodulesr-   ÚseedÚ
_bootstrapÚ_exitr%   )r   r   ÚcodeÚparent_rÚchild_wr-   r   r   r   r   E   s   






zPopen._launchc                 C   s0   | j d urzt | j ¡ W d | _ d S d | _ w d S r   )r%   r   r/   )r   r   r   r   r/   V   s
   
üzPopen.closer   )Ú__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    