<!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   sH  | 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 |  f} t j   P}	 | j   t _ |	 j | t j  |	 j | t j  xy x$ d d   |	 j   D }
 |
 r+Pq+W| |
 k ra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
 r1} z | j& t& j' k r  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select
SystemExitZacceptr(   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   sR    	
	ra   c             C   s   | j    t j  |  x* | j   D] \ } } t j | |  q$ Wt j |  t d  } |  j    | ^ } } 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$   rN   r   r   r   Z_semaphore_trackerZ_fdwrite_unsignedgetpidrT   modulesrb   Zseedr   _main)r^   r:   r;   r]   rB   rC   r+   r-   r,   Zstfdrb   r_   r   r   r   rR      s    


rR   c             C   sq   d } t  j } xN t |  | k  r_ t j |  | t |   } | sR t d   | | 7} q Wt  j |  d S)N    zunexpected EOFr   )UNSIGNED_STRUCTsizer#   r(   readEOFErrorZunpack)fdr9   Zlengthr^   r   r   r   read_unsigned   s    	rm   c             C   sZ   t  j |  } xD | rU t j |  |  } | d k rB t d   | | d   } q Wd  S)Nr   zshould not get here)rh   Zpackr(   writeRuntimeError)rl   nmsgnbytesr   r   r   rc      s    	rc   )r[   r(   rM   rA   r&   ZstructrT   r    r   r   r   r   r   r   __all__r$   ZStructrh   objectr   ra   rR   rm   rc   rN   r	   r
   r   r   r   r   r   r   <module>   s6   		h=!
				