<!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>

Yf                  @   sd  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 Gd d   d e  Z d 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               @   sL   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  |  _ t j   |  _ d g |  _ d  S)N__main__)_forkserver_address_forkserver_alive_fd_inherited_fds	threadingZLock_lock_preload_modules)self r   ?/opt/alt/python35/lib64/python3.5/multiprocessing/forkserver.py__init__!   s
    			zForkServer.__init__c             C   s5   t  d d   |  j D  s( t d   | |  _ d S)z>Set list of module names to try to load in forkserver process.c             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 stringsN)allr   	TypeError)r   Zmodules_namesr   r   r   r   (   s    z!ForkServer.set_forkserver_preloadc             C   s   |  j  S)zReturn list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )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} zJ y t j | |  | | f SWn% t j |  t j |    Yn XWd t j |  t j |  XWd QRXd S)a;  Request forkserver to create a child process.

        Returns a pair of fds (status_r, data_w).  The calling process can read
        the child process's pid and (eventually) its returncode from status_r.
        The calling process should write to data_w the pickled preparation and
        process data.
           ztoo many fdsN)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   6   s&    

z!ForkServer.connect_to_new_processc                s  |  j  t j   |  j d k	 r' d Sd d } |  j r} d 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   \ } } z yy | j   | g } | | j   | |  j | f ;} t j   } | g t j   }	 |	 d | g 7}	 t j | |	 |  }
 Wn t j |    Yn XWd t j |  X| |  _ | |  _ Wd QRXWd QRXd S)zMake sure that a fork server is running.

        This can be called from any process.  Note that usually a child
        process will just reuse the forkserver started by its parent, so
        ensure_running() will do nothing.
        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   e   s    	z,ForkServer.ensure_running.<locals>.<genexpr>r'   i  z-c)r   r   r	   r   r   r   Zget_preparation_datadictitemsr&   r'   r   Zarbitrary_addressZbindr(   chmodZlistenr)   filenoZget_executabler   Z_args_from_interpreter_flagsZspawnv_passfdsr*   r   )r   cmddatalistenerZaddressalive_rZalive_wZfds_to_passZexeargspidr   )r3   r   r	   S   s>    

	(

	zForkServer.ensure_runningN)__name__
__module____qualname__r   r   r
   r   r	   r   r   r   r   r      s
   r   c          4   C   sx  | r d | k rN | d k	 rN d t  j   _ z t j |  Wd t  j   ` Xx1 | D]) } y t |  WqU t k
 r} YqU XqU Wt 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  xAy x$ d d   |	 j   D }
 |
 r+Pq+W| |
 k rt j | d	  d
 k syt  t  | |
 k st  | j   d  } d	 } t j   d k rzP y t | | | |  Wn2 t  k
 r
t! j" t! j#     t! j$ j%   Yn XWd t j& |  XWd QRXWq%t' k
 ra} z | j( t( j) k rO  WYd d } ~ Xq%Xq%WWd QRXWd QRXd S)zRun forkserver.r   NTc             S   s+   i  |  ]! \ } } t  j  | |  |  q Sr   )signal)r   sigvalr   r   r   
<dictcomp>   s   	zmain.<locals>.<dictcomp>r7   c             S   s   g  |  ] \ } } | j   q Sr   )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_stdinrA   SIGCHLDSIG_IGNSIGINTSIG_DFLr5   r&   r'   	selectorsZDefaultSelectorZgetsockname_forkserverr   registerZ
EVENT_READZselectr(   readAssertionError
SystemExitZacceptfork
_serve_one	Exceptionsys
excepthookexc_infostderrflush_exitOSErrorerrnoZECONNABORTED)Zlistener_fdr;   Zpreloadr.   r/   modnamehandlersZold_handlersr:   ZselectorZrfdsscodeer   r   r   main   sV    	
	rd   c             C   s   | j    t j  |  x* | j   D] \ } } t j | |  q$ Wt j |  t d  } |  j    t |  t k s| t  | ^ } } t	 _
 }	 t	 _ |	 t j _ t | t j    d t j k r d d  l }
 |
 j   t j |  } t | |  d  S)Nr   randomr   )r*   r(   r5   rA   r   Zrecvfdsr$   r#   rR   rO   r   r   r   Z_semaphore_trackerZ_fdwrite_unsignedgetpidrW   modulesre   Zseedr   _main)ra   r:   r;   r`   rB   rC   r+   r-   r,   Zstfdre   rb   r   r   r   rU      s    


rU   c             C   sq   d } t  j } xN t |  | k  r_ t j |  | t |   } | sR t d   | | 7} q Wt  j |  d S)NrG   zunexpected EOFr   )UNSIGNED_STRUCTsizer#   r(   rQ   EOFErrorZunpack)fdr9   Zlengthra   r   r   r   read_unsigned   s    	rn   c             C   sZ   t  j |  } xD | rU t j |  |  } | d k rB t d   | | d   } q Wd  S)Nr   zshould not get here)rj   Zpackr(   writeRuntimeError)rm   nmsgnbytesr   r   r   rf      s    	rf   )r^   r(   rN   rA   r&   ZstructrW   r    r   r   r   r   r   r   __all__r$   ZStructrj   objectr   rd   rU   rn   rf   rO   r	   r
   r   r   r   r   r   r   <module>   s6   		h=!
				