a
    zeI	                     @   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   _flush_std_streams
returncode	finalizer_launch)selfprocess_obj r   0/usr/lib/python3.9/multiprocessing/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 rLzt| j|\}}W n ty4   Y d S 0 || jkrLt|| _ | j S r   )r   oswaitpidpidOSErrorwaitstatus_to_exitcode)r   flagr   stsr   r   r   poll   s    

z
Popen.pollNc                 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   multiprocessing.connectionr   sentinelr   r   WNOHANG)r   timeoutr   r   r   r   r   $   s    
z
Popen.waitc                 C   sV   | j d u rRzt| j| W n4 ty.   Y n$ tyP   | jddd u rL Y n0 d S )Ng?)r   )r   r   killr   ProcessLookupErrorr   r   )r   sigr   r   r   _send_signal.   s    
zPopen._send_signalc                 C   s   |  tj d S r   )r"   signalSIGTERMr   r   r   r   	terminate8   s    zPopen.terminatec                 C   s   |  tj d S r   )r"   r#   SIGKILLr%   r   r   r   r   ;   s    z
Popen.killc              	   C   s   d}t  \}}t  \}}t  | _| jdkrnz.t | t | |j|d}W t | qt | 0 n0t | t | t| tj	||f| _
|| _d S )Nr   r   )parent_sentinel)r   piper   r   close
_bootstrap_exitr   Finalize	close_fdsr	   r   )r   r   codeparent_rchild_wchild_rparent_wr   r   r   r
   >   s     






zPopen._launchc                 C   s   | j d ur|    d S r   )r	   r%   r   r   r   r*   Q   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   r#    r   __all__objectr   r   r   r   r   <module>   s   