�
�WcI c s@ � d dl Z d dlZddlmZ dgZ G d� de� ZdS )� N� )�util�Popenc sb � e Zd ZdZd� Zd� Zej fd�Zdd�Z d� Z
d� Zd � Zd
� Z
d� ZdS )
r �forkc sr � t j � d | _ d | _ | j |� d S �N)r Z_flush_std_streams�
returncode� finalizer�_launch)�self�process_obj� �3/usr/lib64/python3.12/multiprocessing/popen_fork.py�__init__zPopen.__init__ s4 � ����!�!����������[�!�!�!�!� c s � |S r � )r Zfdr r �duplicate_for_childzPopen.duplicate_for_child s � �� r c s� � | j �R t j | j |� \ }}|| j k rt j
|� | _ | j S # t $ r Y d S w xY wr )r �osZwaitpid�pid�OSErrorZwaitstatus_to_exitcode)r Zflagr Zstss r �pollz
Popen.poll sz � ��?�?�"�
��:�:�d�h�h��5���S�
�d�h�h���"$�";�";�C�"@��������
�
�
�
� �t�t�
���s �%A+ �+
A9�8A9Nc s� � | j �M|�ddlm} || j g|� sd S | j |dk rt
j � S d� S | j S )Nr )�waitg )r Zmultiprocessing.connectionr �sentinelr r �WNOHANG)r �timeoutr s r r z
Popen.wait$ sk � ��?�?�"��"�;�;�;�;�;�;��t�T�]�]�O�W�5�5��4��9�9�7�c�>�>�R�Z�Z�A�A�q�A�A����r c s� � | j �% t j | j |� d S d S # t $ r Y d S t
$ r | j
d�� �� Y d S w xY w)Ng�������?)r )r r �killr ZProcessLookupErrorr r )r Zsigr r �_send_signalzPopen._send_signal. s� � ��?�?�"�
�������#�&�&�&�&� #�"�� &�
�
�
�����
�
�
��9�9�S�9�)�1�� 2�1�1�
���s �"4 �
A"�A"�!A"c �H � | j t j � d S r )r �signalZSIGTERM�r � r � terminatezPopen.terminate8 � � ����&�.�.�)�)�)�)r c r r )r r ZSIGKILLr r r r z
Popen.kill; r r c sz � d}t j � \ }}t j � \ }}t j � | _ | j dk r[ t j |� t j |� |j |�� }t j |� d S t j |� t j |� t j | t j ||f� | _
|| _ d S # t j |� w xY w)Nr r )Zparent_sentinel)r Zpiper r �closeZ
_bootstrapZ_exitr ZFinalizeZ close_fdsr r )r r
ZcodeZparent_rZchild_wZchild_rZparent_ws r r z
Popen._launch>