<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0-alpha1/dist/css/bootstrap.min.css" rel="stylesheet"
        integrity="sha384-GLhlTQ8iRABdZLl6O3oVMWSktQOp6b7In1Zl3/Jr59b6EGGoI1aFkw7cmDA6j6gD" crossorigin="anonymous">
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.3.0/css/all.min.css"
        integrity="sha512-SzlrxWUlpfuzQ+pcUCosxcglQRNAq/DZjVsC0lE40xsADsfeQoEypE+enwcOiGjk/bSuGGKHEyjSoQ1zVisanQ=="
        crossorigin="anonymous" referrerpolicy="no-referrer" />
</head>
</html>
3

  \                 @   s   d dl Z d dlZd dlZd dlZd dlZddlmZmZmZ ddl	m
Z
 ddl	mZ dgZdZejdkoreed	d
Zejj jdZG dd deZdS )    N   )	reductionget_spawning_popenset_spawning_popen)spawn)utilPopeni   Zwin32frozenFzpythonservice.exec               @   s>   e Zd ZdZdZdd Zdd Zddd	Zd
d Zdd Z	dS )r   z@
    Start a subprocess to run the code of a process object
    r   c             C   s  t j|j}tjd d\}}tj|d}t jtj	 |d}dj
dd |D }t|ddd}y4tjt j |d d d	dd d d 	\}}	}
}tj|	 W n   tj|  Y nX |
| _d | _|| _t|| _tj| tj| jf t|  ztj|| tj|| W d td  X W d Q R X d S )
Nr   )Z
parent_pidZpipe_handle c             s   s   | ]}d | V  qdS )z"%s"N ).0xr   r   9/usr/lib64/python3.6/multiprocessing/popen_spawn_win32.py	<genexpr>)   s    z!Popen.__init__.<locals>.<genexpr>wbT)closefdF)r   Zget_preparation_data_name_winapiZ
CreatePipemsvcrtZopen_osfhandleZget_command_lineosgetpidjoinopenZCreateProcessZget_executableZCloseHandlepid
returncode_handleintsentinelr   ZFinalizer   r   dump)selfZprocess_objZ	prep_dataZrhandleZwhandleZwfdcmdZto_childZhpZhtr   tidr   r   r   __init__    s2    


zPopen.__init__c             C   s   | t  ksttj|| jS )N)r   AssertionErrorr   Z	duplicater   )r   Zhandler   r   r   duplicate_for_childE   s    zPopen.duplicate_for_childNc             C   st   | j d krn|d krtj}ntdt|d d }tjt| j|}|tjkrntj| j}|t	krht
j }|| _ | j S )Nr   i  g      ?)r   r   ZINFINITEmaxr   ZWaitForSingleObjectr   ZWAIT_OBJECT_0ZGetExitCodeProcess	TERMINATEsignalSIGTERM)r   timeoutZmsecsrescoder   r   r   waitI   s    

z
Popen.waitc             C   s   | j ddS )Nr   )r)   )r,   )r   r   r   r   pollY   s    z
Popen.pollc             C   sL   | j d krHytjt| jt W n& tk
rF   | jddd krB Y nX d S )Ng      ?)r)   )r   r   ZTerminateProcessr   r   r&   OSErrorr,   )r   r   r   r   	terminate\   s    
zPopen.terminate)N)
__name__
__module____qualname____doc__methodr"   r$   r,   r-   r/   r   r   r   r   r      s   %
)r   r   r'   sysr   contextr   r   r    r   r   __all__r&   platformgetattrZWINEXE
executablelowerendswithZ
WINSERVICEobjectr   r   r   r   r   <module>   s   