<!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
2a!                 @   s   d dl Z d dlZd dlZ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	 ddlm
Z
 ddlmZ ddlmZ ddlmZ ddlmZ d	d
ddgZdZejdZG dd deZdddZdd Zdd Zdd Ze ZejZejZejZejZdS )    N   )
connection)process)	reduction)semaphore_tracker)spawn)utilensure_runningget_inherited_fdsconnect_to_new_processset_forkserver_preload   Qc               @   s4   e Zd Zdd Zdd Zdd Zdd Zd	d
 ZdS )
ForkServerc             C   s.   d | _ d | _d | _d | _tj | _dg| _d S )N__main__)_forkserver_address_forkserver_alive_fd_forkserver_pid_inherited_fds	threadingZLock_lock_preload_modules)self r   //opt/alt/python36/lib64/python3.6/forkserver.py__init__!   s    
zForkServer.__init__c             C   s&   t dd | jD std|| _d S )Nc             s   s   | ]}t |tkV  qd S )N)typestr).0modr   r   r   	<genexpr>+   s    z4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of strings)allr   	TypeError)r   Zmodules_namesr   r   r   r   )   s    z!ForkServer.set_forkserver_preloadc             C   s   | j S )N)r   )r   r   r   r   r
   /   s    zForkServer.get_inherited_fdsc             C   s   | j   t|d tkr tdtjtj}|j| j tj	 \}}tj	 \}}||| j
tj g}||7 }z<ytj|| ||fS    tj| tj|  Y nX W d tj| tj| X W d Q R X d S )N   ztoo many fds)r	   lenMAXFDS_TO_SEND
ValueErrorsocketAF_UNIXZconnectr   ospiper   r   Zgetfdr   Zsendfdsclose)r   fdsZclientZparent_rchild_wchild_rZparent_wZallfdsr   r   r   r   7   s&    



z!ForkServer.connect_to_new_processc                s  | j n tj  | jd k	rVtj| jtj\}}|s8d S tj| j d | _	d | _d | _d}| j
rddh tjd}t fdd|j D }ni }tjtj}tjd}|j| tj|d	 |j  tj \}}ztyV|j |g}	||j || j
|f; }tj }
|
gtj  }|d
|g7 }tj|
||	}W n   tj|  Y nX W d tj| X || _	|| _|| _W d Q R X W d Q R X d S )Nz-from multiprocessing.forkserver import main; zmain(%d, %d, %r, **%r)	main_pathsys_pathignorec             3   s"   | ]\}}| kr||fV  qd S )Nr   )r   xy)desired_keysr   r   r    o   s    z,ForkServer.ensure_running.<locals>.<genexpr>r(   i  z-czCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r))r   r   r	   r   r)   waitpidWNOHANGr+   r   r   r   r   Zget_preparation_datadictitemsr'   r(   r   Zarbitrary_addressZbindchmodZlistenr*   filenoZget_executabler   Z_args_from_interpreter_flagsZspawnv_passfds)r   pidstatuscmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargsr   )r4   r   r	   T   sL    

 



zForkServer.ensure_runningN)__name__
__module____qualname__r   r   r
   r   r	   r   r   r   r   r      s
   r   c          4   C   s  |rhd|kr8|d k	r8dt j _ztj| W d t j `X x.|D ]&}yt| W q> tk
rb   Y q>X q>W tj  t	j
t	jt	jt	ji}dd |j D }tjtj| d,}tj }	|j t_|	j|tj |	j|tj xyxdd |	j D }
|
rP qW ||
krt|j d l}d	}tj dkrzFyt|||| W n. tk
rn   tjtj    tj!j"  Y nX W d tj#| X W d Q R X W q t$k
r } z|j%t%j&kr W Y d d }~X qX qW W d Q R X W d Q R X d S )
Nr   Tc             S   s   i | ]\}}t j |||qS r   )signal)r   sigvalr   r   r   
<dictcomp>   s   zmain.<locals>.<dictcomp>)r:   c             S   s   g | ]\}}|j qS r   )Zfileobj)r   keyZeventsr   r   r   
<listcomp>   s    zmain.<locals>.<listcomp>r   r   )'r   Zcurrent_processZ_inheritingr   Zimport_main_path
__import__ImportErrorr   Z_close_stdinrE   SIGCHLDSIG_IGNSIGINTr8   r'   r(   	selectorsZDefaultSelectorZgetsockname_forkserverr   registerZ
EVENT_READZselect
SystemExitZacceptr)   fork
_serve_one	Exceptionsys
excepthookexc_infostderrflush_exitOSErrorerrnoZECONNABORTED)Zlistener_fdr@   Zpreloadr/   r0   modnamehandlersZold_handlersr?   ZselectorZrfdsscodeer   r   r   main   sR    





rd   c             C   s   |j   tj | x |j D ]\}}tj|| qW tj| td }| j   |^}}t_}	t_	|	t
j_t|tj  dtjkrdd l}
|
j  tj|}t|| d S )Nr   randomr   )r+   r)   r8   rE   r   Zrecvfdsr%   rQ   r   r   r   Z_semaphore_trackerZ_fdwrite_unsignedgetpidrW   modulesre   Zseedr   _main)ra   r?   r@   r`   rF   rG   r,   r.   r-   Zstfdre   rb   r   r   r   rU      s    


rU   c             C   sR   d}t j}x8t||k rBtj| |t| }|s8td||7 }qW t j|d S )N    zunexpected EOFr   )UNSIGNED_STRUCTsizer$   r)   readEOFErrorunpack)fdr>   Zlengthra   r   r   r   read_unsigned   s    rq   c             C   s@   t j|}x0|r:tj| |}|dkr,td||d  }qW d S )Nr   zshould not get here)rk   packr)   writeRuntimeError)rp   nmsgnbytesr   r   r   rf      s    
rf   )NN)r^   r)   rP   rE   r'   structrW   r    r   r   contextr   r   r   r   __all__r%   Structrk   objectr   rd   rU   rq   rf   rQ   r	   r
   r   r   r   r   r   r   <module>   s6   
s
=!
