HEX
Server: Apache/2.4.62 (Debian)
System: Linux MIA-VPS-VM01781 5.10.0-32-amd64 #1 SMP Debian 5.10.223-1 (2024-08-10) x86_64
User: webmaster (1001)
PHP: 8.2.29
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: //lib/python3.7/multiprocessing/__pycache__/forkserver.cpython-37.pyc
B

U��e.�@s�ddlZddlZddlZddlZddlZddlZddlZddlZddlZddl	m
Z
ddl	mZddlm
Z
ddl	mZddl	mZddl	mZd	d
ddgZd
Ze�d�ZGdd�de�Zddd�Zdd�Zdd�Zdd�Ze�ZejZejZejZejZdS)�N�)�
connection)�process)�	reduction)�semaphore_tracker)�spawn)�util�ensure_running�get_inherited_fds�connect_to_new_process�set_forkserver_preload��qc@s4eZdZdd�Zdd�Zdd�Zdd�Zd	d
�ZdS)�
ForkServercCs.d|_d|_d|_d|_t��|_dg|_dS)N�__main__)�_forkserver_address�_forkserver_alive_fd�_forkserver_pid�_inherited_fds�	threadingZLock�_lock�_preload_modules)�self�r�0/usr/lib/python3.7/multiprocessing/forkserver.py�__init__"s
zForkServer.__init__cCs&tdd�|jD��std��||_dS)z>Set list of module names to try to load in forkserver process.css|]}t|�tkVqdS)N)�type�str)�.0�modrrr�	<genexpr>,sz4ForkServer.set_forkserver_preload.<locals>.<genexpr>z&module_names must be a list of stringsN)�allr�	TypeError)rZ
modules_namesrrrr*sz!ForkServer.set_forkserver_preloadcCs|jS)z�Return list of fds inherited from parent process.

        This returns None if the current process was not started by fork
        server.
        )r)rrrrr
0szForkServer.get_inherited_fdsc
Cs�|��t|�dtkr td��t�tj���}|�|j�t�	�\}}t�	�\}}|||j
t��g}||7}z<yt
�||�||fSt�|�t�|��YnXWdt�|�t�|�XWdQRXdS)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_UNIXZconnectr�os�piperrZgetfdrZsendfds�close)r�fdsZclientZparent_r�child_w�child_rZparent_wZallfdsrrrr8s&



z!ForkServer.connect_to_new_processcs||j��jt��|jdk	rVt�|jtj�\}}|s8dSt�|j�d|_	d|_d|_d}|j
r�ddh�t�d�}�fdd�|�
�D�}ni}t�tj���}t�d�}|�|�t�|d	�|��t��\}}ztyV|��|g}	||��||j
|f;}t��}
|
gt��}|d
|g7}t�|
||	�}Wnt�|��YnXWdt�|�X||_	||_||_WdQRXWdQRXdS)z�Make 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.
        NzCfrom multiprocessing.forkserver import main; main(%d, %d, %r, **%r)�	main_path�sys_path�ignorecsi|]\}}|�kr||�qSrr)r�x�y)�desired_keysrr�
<dictcomp>psz-ForkServer.ensure_running.<locals>.<dictcomp>r(i�z-c)rrr	rr)�waitpid�WNOHANGr+rrrrZget_preparation_data�itemsr'r(rZarbitrary_addressZbind�chmodZlistenr*�filenoZget_executablerZ_args_from_interpreter_flagsZspawnv_passfds)r�pidZstatus�cmd�data�listenerZaddress�alive_rZalive_wZfds_to_passZexe�argsr)r4rr	UsJ





zForkServer.ensure_runningN)�__name__�
__module__�__qualname__rrr
rr	rrrrr s
rcCs|rhd|kr8|dk	r8dt��_zt�|�Wdt��`Xx.|D]&}yt|�Wq>tk
rbYq>Xq>Wt��t	�
�\}}t	�|d�t	�|d�dd�}tj
|tjtji}	dd�|	��D�}
t�|�i}tjtj|d	���}t����}
|��t_|
�|tj�|
�|tj�|
�|tj��xʐy�x d
d�|
��D�}|�r,P�q,W||k�rtt	�|d�d
k�sptd��t�||k�rdt	�|d�x�yt	�dt	j �\}}Wnt!k
�r�PYnX|dk�r�P|�"|d�}|dk	�rPt	�#|��r�t	�$|�}n&t	�%|��std�&||���t	�'|�}yt(||�Wnt)k
�rBYnXt	�*|�nt+�,d|��q�W||k�r�|�-�d��0}t.�/|t0d�}t1|�t0k�r�t2d�&t1|����|^}}}|�*�t	�3�}|dk�rVd}zpy<|�*�|
�*�||||g}|�4|�5��t6||||
�}Wn.t7k
�rBt8j9t8�:��t8j;�<�YnXWdt	�=|�XnRyt(||�Wnt)k
�rzYnX|||<t	�*|�x|D]}t	�*|��q�WWdQRXWn4t>k
�r�}z|j?t?j@k�r؂Wdd}~XYnX�q&WWdQRXWdQRXdS)zRun forkserver.rNTFcWsdS)Nr)Z_unusedrrr�sigchld_handler�szmain.<locals>.sigchld_handlercSsi|]\}}t�||�|�qSr)�signal)r�sig�valrrrr5�szmain.<locals>.<dictcomp>)r:cSsg|]\}}|j�qSr)Zfileobj)r�keyZeventsrrr�
<listcomp>�szmain.<locals>.<listcomp>r�zNot at EOF?i���rzChild {0:n} status is {1:n}z.forkserver: waitpid returned unexpected pid %dzToo many ({0:n}) fds to send)ArZcurrent_processZ_inheritingrZimport_main_path�
__import__�ImportErrorrZ_close_stdinr)r*�set_blockingrE�SIGCHLD�SIGINT�SIG_IGNr8�
set_wakeup_fdr'r(�	selectorsZDefaultSelectorZgetsockname�_forkserverr�registerZ
EVENT_READZselect�read�AssertionError�
SystemExitr6r7�ChildProcessError�pop�WIFSIGNALED�WTERMSIG�	WIFEXITED�format�WEXITSTATUS�write_signed�BrokenPipeErrorr+�warnings�warnZacceptrZrecvfdsr%r$�RuntimeError�fork�extend�values�
_serve_one�	Exception�sys�
excepthook�exc_info�stderr�flush�_exit�OSError�errnoZECONNABORTED)Zlistener_fdr?Zpreloadr/r0�modnameZsig_rZsig_wrD�handlersZold_handlersZ	pid_to_fdr>ZselectorZrfdsr;�stsr-�
returncode�sr,r.�code�
unused_fds�fd�errr�main�s�

















r{cCsdt�d�x |��D]\}}t�||�qWx|D]}t�|�q2W|^t_tj_	t_
t�|�}|S)NrK)
rErRr8r)r+rTrrZ_semaphore_trackerZ_fdrr�_main)r.r,rxrsrFrGryrwrrrrhs


rhcCsRd}tj}x8t|�|krBt�||t|��}|s8td��||7}qWt�|�dS)NrJzunexpected EOFr)�
SIGNED_STRUCT�sizer$r)rV�EOFErrorZunpack)ryr=�lengthrvrrr�read_signed2sr�cCs@t�|�}x0|r:t�||�}|dkr,td��||d�}qWdS)Nrzshould not get here)r}Zpackr)�writerd)ry�n�msg�nbytesrrrr`<s
r`)NN) rqr)rSrEr'Zstructrjrrb�rr�contextrrrr�__all__r%ZStructr}�objectrr{rhr�r`rTr	r
rrrrrr�<module>s:
r