a  ze.@s2gdZddlZddlZddlZddlZddlZddlmZzej e Z Wne yfdZ Yn0ddZ ddZdd Zd d ZGd d d eZGdddeZGdddeZGdddeZdaeaedaea[iZeej D]0\Z!Z"e!dddkrde!vrde!ee" <qeZ#dS)) BaseProcesscurrent_processactive_childrenparent_processN)WeakSetcCstSN)_current_processr r K/opt/bitninja-python-dojo/embedded/lib/python3.9/multiprocessing/process.pyr%srcCstttSr)_cleanuplist _childrenr r r r r+srcCstSr)_parent_processr r r r r3srcCs*ttD]}|jdurt|qdSr)r r _popenpolldiscard)pr r r r =s r c@seZdZddZddddifddddZdd Zd d Zd d ZddZddZ d+ddZ ddZ ddZ e ddZejddZe ddZejddZe ddZejd dZe d!d"Ze d#d$ZeZe d%d&Zd'd(Zd,d)d*ZdS)-rcCstdSr)NotImplementedErrorselfr r r _PopenMszBaseProcess._PopenNr )daemoncCstt}tj|f|_tj|_t|_tj |_ d|_ d|_ ||_ t||_t||_|pt|jdddd|jD|_|dur||_t|dS)NF-:css|]}t|VqdSr)str).0ir r r ^z'BaseProcess.__init__..)next_process_counterr _identity_configcopyosgetpid _parent_pidname _parent_namer_closed_targettuple_argsdict_kwargstype__name__join_namer _danglingadd)rgrouptargetr'argskwargsrcountr r r __init__Ps     zBaseProcess.__init__cCs|jrtddS)Nzprocess object is closed)r) ValueErrorrr r r _check_closedcszBaseProcess._check_closedcCs|jr|j|ji|jdSr)r*r,r.rr r r rungszBaseProcess.runcCs>|t|||_|jj|_|`|`|`t |dSr) r<r rrsentinel _sentinelr*r,r.r r4rr r r startns    zBaseProcess.startcCs||jdSr)r<r terminaterr r r rAszBaseProcess.terminatecCs||jdSr)r<rkillrr r r rBszBaseProcess.killcCs*||j|}|dur&t|dSr)r<rwaitr r)rtimeoutresr r r r1s zBaseProcess.joincCsJ||turdS|jdur"dS|j}|dur8dSt|dSdS)NTF)r<rrrr r)r returncoder r r is_alives   zBaseProcess.is_alivecCsH|jdur>|jdur td|jd|_|`t|d|_dS)Nz^Cannot close a process while it is still running. You should first call join() or terminate().T)rrr;closer?r rr)rr r r rHs   zBaseProcess.closecCs|jSrr2rr r r r'szBaseProcess.namecCs ||_dSrrI)rr'r r r r'scCs|jddS)NrF)r"getrr r r rszBaseProcess.daemoncCs||jd<dS)Nrr")rdaemonicr r r rscCs |jdSNauthkeyrKrr r r rNszBaseProcess.authkeycCst||jd<dSrM)AuthenticationStringr")rrNr r r rNscCs"||jdur|jS|jSr)r<rrrr r r exitcodes zBaseProcess.exitcodecCs*||turtS|jo$|jjSdSr)r<rr$r%rpidrr r r identszBaseProcess.identcCs2|z|jWSty,tddYn0dS)Nzprocess not started)r<r?AttributeErrorr;rr r r r>s  zBaseProcess.sentinelcCsd}|turd}nL|jrd}n@|jtkr2d}n,|jdurBd}n|j}|durZd}nd}t|jd|j g}|jdur| d|jj | d|j| ||durt ||}| d ||jr| d d d |S) Nstartedclosedunknowninitialstoppedzname=%rzpid=%sz parent=%sz exitcode=%srz<%s> )rr)r&r$r%rrr/r0r2appendrQ_exitcode_to_namerJrr1)rrPstatusinfor r r __repr__s0      zBaseProcess.__repr__c Csddlm}m}z`z|jdur,||jtdata | t }|a t |j |j|atjrntz|j|W~n~0|dz|d}W|n |0Wnty }zJ|jdurd}n.t|jtr|j}ntj t!|jdd}WYd}~n:d}~0d}ddl"}tj d|j#|$Yn0Wt%|d||&n t%|d||&0|S)N)utilcontextz child process calling self.run()r z Process %s: z process exiting with exitcode %d)'r`ra _start_method_force_start_method itertoolsr9r setr _close_stdinr_ParentProcessr(r&r threading_HAVE_THREAD_NATIVE_ID main_thread_set_native_id_finalizer_registryclear_run_after_forkersr]r=_exit_function SystemExitcode isinstanceintsysstderrwriter tracebackr' print_exc _shutdown_flush_std_streams)rparent_sentinelr`ra old_processrPeryr r r _bootstrap"sT            zBaseProcess._bootstrap)N)N)r0 __module__ __qualname__rr:r<r=r@rArBr1rGrHpropertyr'setterrrNrPrRrQr>r^rr r r r rGsB            rc@seZdZddZdS)rOcCs,ddlm}|durtdtt|ffS)Nr_)get_spawning_popenzJPickling an AuthenticationString object is disallowed for security reasons)rar TypeErrorrObytes)rrr r r __reduce__Xs   zAuthenticationString.__reduce__N)r0rrrr r r r rOWsrOc@s6eZdZddZddZeddZd dd ZeZdS) ricCs4d|_||_||_d|_d|_d|_||_i|_dS)Nr F)r!r2_pidr&rr)r?r")rr'rQr>r r r r:hsz_ParentProcess.__init__cCsddlm}||jgdd SNr)rC)rDmultiprocessing.connectionrCr?)rrCr r r rGrs z_ParentProcess.is_alivecCs|jSr)rrr r r rRvsz_ParentProcess.identNcCs ddlm}||jg|ddSrr)rrDrCr r r r1zs z_ParentProcess.join)N) r0rrr:rGrrRr1rQr r r r rifs    ric@seZdZddZddZdS) _MainProcesscCs8d|_d|_d|_d|_d|_ttddd|_dS)Nr MainProcessF z/mp)rN semprefix) r!r2r&rr)rOr$urandomr"rr r r r:s z_MainProcess.__init__cCsdSrr rr r r rHsz_MainProcess.closeN)r0rrr:rHr r r r rsrr_ZSIG_r)$__all__r$rvsignalrfrj _weakrefsetrpathabspathgetcwd ORIGINAL_DIROSErrorrrrr objectrrrOrirrrr9r rgr r[r __dict__itemsr'signumr3r r r r  s<     !