<!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>
a
    XC?hn/  ã                   @   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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 g d	¢Zd
Ze 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)Úresource_tracker)Úspawn)Úutil)Úensure_runningÚget_inherited_fdsÚconnect_to_new_processÚset_forkserver_preloadé   Úqc                   @   sD   e Zd Zdd„ Zd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 ¡ | _dg| _d S )NÚ__main__)Ú_forkserver_addressÚ_forkserver_alive_fdÚ_forkserver_pidÚ_inherited_fdsÚ	threadingZLockÚ_lockÚ_preload_modules©Úself© r   ú?/opt/alt/python39/lib64/python3.9/multiprocessing/forkserver.pyÚ__init__"   s    
zForkServer.__init__c                 C   s2   | j  |  ¡  W d   ƒ n1 s$0    Y  d S ©N)r   Ú_stop_unlockedr   r   r   r   Ú_stop*   s    zForkServer._stopc                 C   sV   | j d u rd S t | j¡ d | _t | j d¡ d | _ t | j¡sLt | j¡ d | _d S )Nr   )	r   ÚosÚcloser   Úwaitpidr   Úis_abstract_socket_namespacer   Úunlinkr   r   r   r   r   /   s    
zForkServer._stop_unlockedc                 C   s&   t dd„ | jD ƒƒstdƒ‚|| _d S )Nc                 s   s   | ]}t |ƒtu V  qd S r   )ÚtypeÚstr)Ú.0Úmodr   r   r   Ú	<genexpr>@   ó    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 r   )r   r   r   r   r   r
   D   s    zForkServer.get_inherited_fdsc              
   C   s  |   ¡  t|ƒd tkr tdƒ‚t tj¡Ü}| | j¡ t 	¡ \}}t 	¡ \}}||| j
t ¡ g}||7 }zvz:t ||¡ ||fW W t |¡ t |¡ W  d   ƒ S    t |¡ t |¡ ‚ Y n0 W t |¡ t |¡ nt |¡ t |¡ 0 W d   ƒ n1 s0    Y  d S )Né   ztoo many fds)r	   ÚlenÚMAXFDS_TO_SENDÚ
ValueErrorÚsocketÚAF_UNIXZconnectr   r    Úpiper   r   Zgetfdr   Zsendfdsr!   )r   ÚfdsZclientZparent_rÚchild_wÚchild_rZparent_wZallfdsr   r   r   r   L   s2    ÿ


ù



ÿ
z!ForkServer.connect_to_new_processc                    sÈ  | j ª t ¡  | jd urbt | jtj¡\}}|sDW d   ƒ d S t | j¡ d | _	d | _d | _d}| j
r–ddh‰ t d¡}‡ fdd„| ¡ D ƒ}ni }t tj¡ì}t d¡}| |¡ t |¡sÒt |d¡ | ¡  t ¡ \}}z~zV| ¡ |g}	|| ¡ || j
|f; }t ¡ }
|
gt ¡  }|d	|g7 }t |
||	¡}W n   t |¡ ‚ Y n0 W t |¡ nt |¡ 0 || _	|| _|| _W d   ƒ n1 sš0    Y  W d   ƒ n1 sº0    Y  d S )
NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)Ú	main_pathÚsys_pathÚignorec                    s   i | ]\}}|ˆ v r||“qS r   r   )r'   ÚxÚy©Zdesired_keysr   r   Ú
<dictcomp>„   r*   z-ForkServer.ensure_running.<locals>.<dictcomp>r2   i€  z-c)r   r   r	   r   r    r"   ÚWNOHANGr!   r   r   r   r   Zget_preparation_dataÚitemsr1   r2   r   Zarbitrary_addressZbindr   r#   ÚchmodZlistenr3   ÚfilenoZget_executableZ_args_from_interpreter_flagsZspawnv_passfds)r   ÚpidZstatusÚcmdÚdataÚlistenerZaddressÚalive_rZalive_wZfds_to_passZexeÚargsr   r<   r   r	   i   sN    





ÿ

zForkServer.ensure_runningN)
Ú__name__Ú
__module__Ú__qualname__r   r   r   r   r
   r   r	   r   r   r   r   r       s   r   c                 C   sö  |rjd|v r@|d ur@dt  ¡ _zt |¡ W t  ¡ `n
t  ¡ `0 |D ]$}zt|ƒ W qD tyf   Y qD0 qDt ¡  t	 
¡ \}}t	 |d¡ t	 |d¡ dd„ }tj|tjtji}	dd„ |	 ¡ D ƒ}
t |¡ i }tjtj| dþ}t ¡ Ò}| ¡ t_| |tj¡ | |tj¡ | |tj¡ zPd	d
„ | ¡ D ƒ}|r(qHq(||v rVt‚||v rt	 |d¡ zt	 dt	j¡\}}W n t yœ   Y qY n0 |dkr¬q| !|d ¡}|d urüt	 "|¡}zt#||ƒ W n t$yî   Y n0 t	 %|¡ nt& 'd| ¡ ql||v rt| (¡ d <}t) *|t+d ¡}t,|ƒt+krXt-d .t,|ƒ¡ƒ‚|^}}}| %¡  t	 /¡ }|dkrd}zxz<| %¡  | %¡  ||||g}| 0| 1¡ ¡ t2||||
ƒ}W n, t3yê   t4j5t4 6¡ Ž  t4j7 8¡  Y n0 W t	 9|¡ nt	 9|¡ 0 nLzt#||ƒ W n t$y*   Y n0 |||< t	 %|¡ |D ]}t	 %|¡ qBW d   ƒ n1 sj0    Y  W n6 t:y¬ } z|j;t;j<kr˜‚ W Y d }~n
d }~0 0 q$W d   ƒ n1 sÈ0    Y  W d   ƒ n1 sè0    Y  d S )Nr   TFc                  W   s   d S r   r   )Z_unusedr   r   r   Úsigchld_handler¼   s    zmain.<locals>.sigchld_handlerc                 S   s   i | ]\}}|t   ||¡“qS r   )Úsignal)r'   ÚsigÚvalr   r   r   r=   Æ   s   ÿzmain.<locals>.<dictcomp>)rA   c                 S   s   g | ]\}}|j ‘qS r   )Zfileobj)r'   ÚkeyZeventsr   r   r   Ú
<listcomp>Ú   r*   zmain.<locals>.<listcomp>i   éÿÿÿÿr   z.forkserver: waitpid returned unexpected pid %dr   zToo many ({0:n}) fds to send)=r   Zcurrent_processZ_inheritingr   Zimport_main_pathÚ
__import__ÚImportErrorr   Z_close_stdinr    r3   Úset_blockingrL   ÚSIGCHLDÚSIGINTÚSIG_IGNr?   Úset_wakeup_fdr1   r2   Ú	selectorsZDefaultSelectorZgetsocknameÚ_forkserverr   ÚregisterZ
EVENT_READZselectÚ
SystemExitÚreadr"   r>   ÚChildProcessErrorÚpopÚwaitstatus_to_exitcodeÚwrite_signedÚBrokenPipeErrorr!   ÚwarningsÚwarnZacceptr   Zrecvfdsr/   r.   ÚRuntimeErrorÚformatÚforkÚextendÚvaluesÚ
_serve_oneÚ	ExceptionÚsysÚ
excepthookÚexc_infoÚstderrÚflushÚ_exitÚOSErrorÚerrnoZECONNABORTED)Zlistener_fdrF   Zpreloadr7   r8   ÚmodnameZsig_rZsig_wrK   ÚhandlersZold_handlersZ	pid_to_fdrE   ZselectorZrfdsrB   Ústsr5   Ú
returncodeÚsr4   r6   ÚcodeÚ
unused_fdsÚfdÚer   r   r   Úmain§   s¾    
üÿ
ÿ





ÿ

ÿÿ

þ
2r}   c           	      C   sh   t  d¡ | ¡ D ]\}}t   ||¡ q|D ]}t |¡ q,|^t_tj_	t_
t | ¡}t | |¡}|S )NrQ   )rL   rX   r?   r    r!   rZ   r   r   Z_resource_trackerZ_fdr   Údupr   Z_main)	r6   r4   rz   ru   rM   rN   r{   Zparent_sentinelry   r   r   r   rj   +  s    
þ
rj   c                 C   sN   d}t j}t|ƒ|k r@t | |t|ƒ ¡}|s6tdƒ‚||7 }q
t  |¡d S )Nr*   zunexpected EOFr   )ÚSIGNED_STRUCTÚsizer.   r    r]   ÚEOFErrorZunpack)r{   rD   Zlengthrx   r   r   r   Úread_signedB  s    
r‚   c                 C   s<   t  |¡}|r8t | |¡}|dkr*tdƒ‚||d … }q
d S )Nr   zshould not get here)r   Zpackr    Úwritere   )r{   ÚnÚmsgÚnbytesr   r   r   ra   L  s    
ra   )NN) rs   r    rY   rL   r1   Zstructrl   r   rc   Ú r   r   Úcontextr   r   r   r   Ú__all__r/   ZStructr   Úobjectr   r}   rj   r‚   ra   rZ   r	   r
   r   r   r   r   r   r   Ú<module>   s:   
 
 
