o
    h	                     @   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ZdS )    N   )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   U/var/www/html/optinet_system/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"   0   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   C   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.   T   s
   
zPopen.closer   )__name__
__module____qualname__methodr$   r   r   r   r%   r!   r"   r+   r   r.   r   r   r   r   r      s    

	)r   r   r   commonr   __all__r   r   r   r   r   <module>   s    