o
    Zc(
                     @   sJ   d dl mZ d dlZd dlZd dlZddlmZ dgZG dd deZ	dS )    )absolute_importN   )TERM_SIGNALPopenc                   @   sT   e Zd 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S )r   forkNc                 C   s(   t j  t j  d | _| | d S N)sysstdoutflushstderr
returncode_launch)selfprocess_obj r   I/var/www/chikooza/env/lib/python3.10/site-packages/billiard/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   s   | j d u rS	 zt| j|\}}W n ty0 } z|jtjkr%W Y d }~qW Y d }~d S d }~ww 	 || jkrSt|rFt| | _ | j S t	|sMJ t
|| _ | j S r   )r   oswaitpidpidOSErrorerrnoEINTRWIFSIGNALEDWTERMSIG	WIFEXITEDWEXITSTATUS)r   flagr   stser   r   r   poll   s$   


z
Popen.pollc                 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   )r   
connectionr#   sentinelr"   r   WNOHANG)r   timeoutr#   r   r   r   r#   2   s   
z
Popen.waitc              
   C   s|   | j d u r<z
t| jt W d S  ty; } z t|dd tjkr)| j	ddd u r0 W Y d }~d S W Y d }~d S d }~ww d S )Nr   g?)r'   )
r   r   killr   r   r   getattrr   ESRCHr#   )r   excr   r   r   	terminate<   s   
zPopen.terminatec              	   C   s   d}t  \}}t  | _| jdkr7zt | dtjv r%dd l}|  |	 }W t 
| d S t 
| w t | || _d S )Nr   r   random)r   piper   r   closer   modulesr-   seed
_bootstrap_exitr%   )r   r   codeparent_rchild_wr-   r   r   r   r   E   s   






zPopen._launchc                 C   s0   | j d urzt| j  W d | _ d S d | _ w d S r   )r%   r   r/   )r   r   r   r   r/   V   s
   
zPopen.closer   )__name__
__module____qualname__methodr%   r   r   r   r&   r"   r#   r,   r   r/   r   r   r   r   r      s    

	)

__future__r   r   r   r   commonr   __all__objectr   r   r   r   r   <module>   s    