
    hI	                     D    d dl Z d dlZddlmZ dgZ G d de          ZdS )    N   )utilPopenc                   X    e Zd ZdZd Zd Zej        fdZddZ	d Z
d Zd	 Zd
 Zd ZdS )r   forkc                 r    t          j                     d | _        d | _        |                     |           d S N)r   _flush_std_streams
returncode	finalizer_launch)selfprocess_objs     1/usr/lib/python3.11/multiprocessing/popen_fork.py__init__zPopen.__init__   s7    !!![!!!!!    c                     |S r	    )r   fds     r   duplicate_for_childzPopen.duplicate_for_child   s    	r   c                     | j         T	 t          j        | j        |          \  }}n# t          $ r Y d S w xY w|| j        k    rt          j        |          | _         | j         S r	   )r   oswaitpidpidOSErrorwaitstatus_to_exitcode)r   flagr   stss       r   pollz
Popen.poll   ss    ?":dh55SS    tt dh"$";C"@"@s   ' 
55Nc                     | j         C|ddlm}  || j        g|          sd S |                     |dk    rt
          j        nd          S | j         S )Nr   )waitg        )r   multiprocessing.connectionr!   sentinelr   r   WNOHANG)r   timeoutr!   s      r   r!   z
Popen.wait$   sg    ?"";;;;;;tT]OW55  4997c>>RZZqAAAr   c                     | j         Q	 t          j        | j        |           d S # t          $ r Y d S t
          $ r |                     d           Y d S w xY wd S )Ng?)r%   )r   r   killr   ProcessLookupErrorr   r!   )r   sigs     r   _send_signalzPopen._send_signal.   s    ?"#&&&&&%      99S9))1 211 #"s   % 
A AAc                 D    |                      t          j                   d S r	   )r*   signalSIGTERMr   s    r   	terminatezPopen.terminate8       &.)))))r   c                 D    |                      t          j                   d S r	   )r*   r,   SIGKILLr.   s    r   r'   z
Popen.kill;   r0   r   c                 0   d}t          j                    \  }}t          j                    \  }}t          j                    | _        | j        dk    rn	 t          j        |           t          j        |           |                    |          }t          j        |           d S # t          j        |           w xY wt          j        |           t          j        |           t          j        | 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_ws          r   r   zPopen._launch>   s    GII'GII7998q=="""""""--g-FFHWHW!]4,4h+@B BDN$DMMMs   >B' 'B=c                 @    | j         |                                   d S d S r	   )r   r.   s    r   r6   zPopen.closeQ   s(    >%NN &%r   r	   )__name__
__module____qualname__methodr   r   r   r$   r   r!   r*   r/   r'   r   r6   r   r   r   r   r      s        F" " "   
 
 
 
 
     * * ** * *% % %&    r   )r   r,    r   __all__objectr   r   r   r   <module>rH      sn    				       )G G G G GF G G G G Gr   