
    RhI	                     <    d dl Z d dlZddlmZ dgZ G d de      Zy)    N   )utilPopenc                   `    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y)r   forkc                 j    t        j                          d | _        d | _        | j	                  |       y N)r   _flush_std_streams
returncode	finalizer_launch)selfprocess_objs     1/usr/lib/python3.12/multiprocessing/popen_fork.py__init__zPopen.__init__   s(    ![!    c                     |S r	    )r   fds     r   duplicate_for_childzPopen.duplicate_for_child   s    	r   c                     | j                   M	 t        j                  | j                  |      \  }}|| j                  k(  rt        j
                  |      | _         | j                   S # t        $ r Y y w xY wr	   )r   oswaitpidpidOSErrorwaitstatus_to_exitcode)r   flagr   stss       r   pollz
Popen.poll   sh    ??"::dhh5S
 dhh"$";";C"@   s   #A& &	A21A2Nc                     | j                   G|ddlm}  || j                  g|      sy | j	                  |dk(  rt
        j                        S d      S | j                   S )Nr   )waitg        )r   multiprocessing.connectionr!   sentinelr   r   WNOHANG)r   timeoutr!   s      r   r!   z
Popen.wait$   sS    ??"";T]]OW5997c>RZZAAqAAr   c                     | j                   "	 t        j                  | j                  |       y y # t        $ r Y y t
        $ r | j                  d       Y y w xY w)Ng?)r%   )r   r   killr   ProcessLookupErrorr   r!   )r   sigs     r   _send_signalzPopen._send_signal.   s]    ??"#& # &  99S9)1 2s    0 	AAAc                 B    | j                  t        j                         y r	   )r*   signalSIGTERMr   s    r   	terminatezPopen.terminate8       &..)r   c                 B    | j                  t        j                         y r	   )r*   r,   SIGKILLr.   s    r   r'   z
Popen.kill;   r0   r   c                 H   d}t        j                         \  }}t        j                         \  }}t        j                         | _        | j                  dk(  rS	 t        j                  |       t        j                  |       |j                  |      }t        j                  |       y t        j                  |       t        j                  |       t        j                  | t        j                  ||f      | _
        || _        y # t        j                  |       w xY w)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    GGI'GGI77988q="""--g-FHHWHHW!]]4,4h+@BDN$DM s   <D
 
D!c                 >    | j                   | j                          y y 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      s#    	  )GF Gr   