o
    OZhF	                     @   s6   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   N/var/www/html/lang_env/lib/python3.10/site-packages/multiprocess/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   sR   | j d u r&zt| j|\}}W n
 ty   Y d S w || jkr&t|| _ | j S r   )r   oswaitpidpidOSErrorwaitstatus_to_exitcode)r
   flagr   stsr   r   r   poll   s   

z
Popen.pollNc                 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   Zmultiprocess.connectionr   sentinelr   r   WNOHANG)r
   timeoutr   r   r   r   r   $   s   
z
Popen.waitc                 C   s\   | j d u r,z
t| j| W d S  ty   Y d S  ty+   | jddd u r( Y d S w d S )Ng?)r   )r   r   killr   ProcessLookupErrorr   r   )r
   sigr   r   r   _send_signal.   s   
zPopen._send_signalc                 C      |  tj d S r   )r    signalSIGTERMr
   r   r   r   	terminate8      zPopen.terminatec                 C   r!   r   )r    r"   SIGKILLr$   r   r   r   r   ;   r&   z
Popen.killc              	   C   s   d}t  \}}t  \}}t  | _| jdkr7zt | t | |j|d}W t | d S t | w t | t | t| tj	||f| _
|| _d S )Nr   r   )Zparent_sentinel)r   piper   r   close
_bootstrap_exitr   ZFinalize	close_fdsr   r   )r
   r   codeZparent_rZchild_wZchild_rZparent_wr   r   r   r	   >   s    







zPopen._launchc                 C   s   | j d ur|    d S d S r   )r   r$   r   r   r   r)   Q   s   
zPopen.closer   )__name__
__module____qualname__methodr   r   r   r   r   r   r    r%   r   r	   r)   r   r   r   r   r      s    


)r   r"    r   __all__objectr   r   r   r   r   <module>   s
    