Sindbad~EG File Manager
3
\�#�@sdddgZddlZddlZddlZddlZddlmZyejjej ��Z
Wnek
rbdZ
YnXdd�Zdd�Z
dd �ZGd
d�de�ZGdd�de�ZGd
d�de�Ze�aejd�ae�a[iZx<eejj��D]*\ZZedd�dko�dekr�eee<q�We�ZdS)�BaseProcess�current_process�active_children�N)�WeakSetcCstS)z@
Return process object representing the current process
)�_current_process�rr�//usr/lib64/python3.6/multiprocessing/process.pyr#scCst�tt�S)zN
Return list of process objects corresponding to live child processes
)�_cleanup�list� _childrenrrrrr)scCs.x(tt�D]}|jj�dk r
tj|�q
WdS)N)r
r�_popen�poll�discard)�prrrr 4sr c@s�eZdZdZdd�Zdddfifdd�dd�Zdd �Zd
d�Zdd
�Zd%dd�Z dd�Z
edd��Zej
dd��Zedd��Zej
dd��Zedd��Zej
dd��Zedd��Zedd��ZeZedd ��Zd!d"�Zd#d$�ZdS)&rz�
Process objects represent activity that is run in a separate process
The class is analogous to `threading.Thread`
cCst�dS)N)�NotImplementedError)�selfrrr�_PopenDszBaseProcess._PopenN)�daemoncCs�|dkstd��tt�}tj|f|_tjj�|_tj�|_ d|_
||_t|�|_
t|�|_|p�t|�jddjdd�|jD��|_|dk r�||_tj|�dS)Nz#group argument must be None for now�-�:css|]}t|�VqdS)N)�str)�.0�irrr� <genexpr>Ssz'BaseProcess.__init__.<locals>.<genexpr>)�AssertionError�next�_process_counterr� _identity�_config�copy�os�getpid�_parent_pidr�_target�tuple�_args�dict�_kwargs�type�__name__�join�_namer� _dangling�add)r�group�target�name�args�kwargsr�countrrr�__init__Gs
zBaseProcess.__init__cCs|jr|j|j|j�dS)zQ
Method to be run in sub-process; can be overridden in sub-class
N)r#r%r')rrrr�runXszBaseProcess.runcCst|jdkstd��|jtj�ks(td��tjjd�s>td��t�|j |�|_|jj
|_|`|`
|`tj|�dS)z%
Start child process
Nzcannot start a process twicez:can only start a process object created by current processrz3daemonic processes are not allowed to have children)rrr"r r!rr�getr r�sentinel� _sentinelr#r%r'rr-)rrrr�start_s
zBaseProcess.startcCs|jj�dS)zT
Terminate process; sends SIGTERM signal or uses TerminateProcess()
N)r� terminate)rrrrr:pszBaseProcess.terminatecCsJ|jtj�kstd��|jdk s(td��|jj|�}|dk rFtj|�dS)z5
Wait until child process terminates
zcan only join a child processNzcan only join a started process)r"r r!rr�waitrr)rZtimeout�resrrrr*vs
zBaseProcess.joincCsX|tkrdS|jtj�ks"td��|jdkr0dS|jj�}|dkrFdStj|�dSdS)z1
Return whether process is alive
Tzcan only test a child processNF) rr"r r!rrr
rr)r�
returncoderrr�is_alive�s
zBaseProcess.is_alivecCs|jS)N)r+)rrrrr0�szBaseProcess.namecCst|t�std��||_dS)Nzname must be a string)�
isinstancerrr+)rr0rrrr0�scCs|jjdd�S)z4
Return whether process is a daemon
rF)rr6)rrrrr�szBaseProcess.daemoncCs |jdkstd��||jd<dS)z1
Set whether process is a daemon
Nzprocess has already startedr)rrr)rZdaemonicrrrr�scCs
|jdS)N�authkey)r)rrrrr@�szBaseProcess.authkeycCst|�|jd<dS)z2
Set authorization key of process
r@N)�AuthenticationStringr)rr@rrrr@�scCs|jdkr|jS|jj�S)zM
Return exit code of process or `None` if it has yet to stop
N)rr
)rrrr�exitcode�s
zBaseProcess.exitcodecCs"|tkrtj�S|jo|jjSdS)zU
Return identifier (PID) of process or `None` if it has yet to start
N)rr r!r�pid)rrrr�ident�szBaseProcess.identcCs(y|jStk
r"td��YnXdS)z{
Return a file descriptor (Unix) or handle (Windows) suitable for
waiting for process termination.
zprocess not startedN)r8�AttributeError�
ValueError)rrrrr7�szBaseProcess.sentinelcCs�|tkrd}n>|jtj�kr"d}n*|jdkr2d}n|jj�dk rH|j}nd}t|�tkrv|dkrfd}ndt j
||�}dt|�j|j||j
r�dp�d fS)
NZstarted�unknown�initialrZstoppedzstopped[%s]z<%s(%s, %s%s)>z daemon�)rr"r r!rr
rBr(�int�_exitcode_to_namer6r)r+r)rZstatusrrr�__repr__�s
zBaseProcess.__repr__c CsJddlm}m}�zy||jdk r,|j|j�tjd�at�a |j
�t}|az|jj
�|j�Wd~X|jd�z|j�d}Wd|j�XWn�tk
r�}zL|js�d}n:t|jdt�r�|jd}ntjjt|jd�d�d}WYdd}~Xn2d}ddl}tjjd|j�|j�YnXWd|jd|�|j�X|S)N�)�util�contextz child process calling self.run()r�
zProcess %s:
z process exiting with exitcode %d)rIrNrOZ
_start_methodZ_force_start_method� itertoolsr3r�setrZ_close_stdinrZ_finalizer_registry�clearZ_run_after_forkers�infor5Z_exit_function�
SystemExitr1r?rJ�sys�stderr�writer� tracebackr0� print_excZ_flush_std_streams)rrNrOZold_processrB�erYrrr�
_bootstrap�sB
zBaseProcess._bootstrap)N)r)�
__module__�__qualname__�__doc__rr4r5r9r:r*r>�propertyr0�setterrr@rBrDrCr7rLr\rrrrr>s*
c@seZdZdd�ZdS)rAcCs,ddlm}|�dkrtd��tt|�ffS)NrM)�get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)rOrb� TypeErrorrA�bytes)rrbrrr�
__reduce__s
zAuthenticationString.__reduce__N)r)r]r^rerrrrrAsrAc@seZdZdd�ZdS)�_MainProcesscCs2f|_d|_d|_d|_ttjd��dd�|_dS)NZMainProcess� z/mp)r@Z semprefix)rr+r"rrAr �urandomr)rrrrr4-sz_MainProcess.__init__N)r)r]r^r4rrrrrf+srfrM�ZSIG�_) �__all__r rV�signalrQ�_weakrefsetr�path�abspath�getcwdZORIGINAL_DIR�OSErrorrrr �objectrrdrArfrr3rrRrrKr
�__dict__�itemsr0Zsignumr,rrrr�<module>
s2
`
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists