o
    fI	                     @   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   1/usr/lib/python3.10/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 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   multiprocessing.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   )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 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
    