
    Ch                     r    S r SSKrSSKrSSKrSSKrSSKJr  \R                  " \5      r	SS\S\
SS4S jjrg)	z;
POSIX-specific functionality for stdio client operations.
    N)Processprocesstimeout_secondsreturnc                 \  #    [        U SS5      =(       d    [        [        U SS5      SS5      nU(       d  g [        R                  " U5      n[        R                  " U[        R
                  5        [        R                  " U5           [        R                  " US5        [        R                  " S5      I Sh  vN   M8   N! [         a     SSS5        gf = f! , (       d  f       O= f [        R                  " U[        R                  5        g! [         a     gf = f! [        [        [        4 a  n[        R                  SU SU S35         U R                  5         [        R                   " U5         U R#                  5       I Sh  vN    SSS5         SnAg! , (       d  f        SnAg= f! [$         a^    [        R                  S	U S
35         U R'                  5           SnAg! [$         a     [        R)                  SU 35           SnAgf = ff = fSnAff = f7f)z
Terminate a process and all its children on POSIX systems.

Uses os.killpg() for atomic process group termination.

Args:
    process: The process to terminate
    timeout_seconds: Timeout in seconds before force killing (default: 2.0)
pidNpopenr   g?z)Process group termination failed for PID z: z", falling back to simple terminatez#Process termination failed for PID z, attempting force killzFailed to kill process )getattrosgetpgidkillpgsignalSIGTERManyiomove_on_aftersleepProcessLookupErrorSIGKILLPermissionErrorOSErrorloggerwarning	terminate
fail_afterwait	Exceptionkill	exception)r   r   r   pgides        P/home/james-whalen/.local/lib/python3.13/site-packages/mcp/os/posix/utilities.pyterminate_posix_process_treer"      s     '5$
'
`777GT3RTY[_+`C 	Bzz#
		$'  1IIdA&++c***	  +)  21 21	IIdFNN+! 		 9 BB3%r!Lnop		B!!/2lln$$ 3222 	BNN@E\]^B B  #:3%!@AAB		BBs  5H,AD% 	C0C<C=CCC
CCD% H,CC
C+'D% /%D H,
D"D%  H,!D""D% %H):H$&F9=F$FF$F9H,$
F6	.F91H,6F99#H!G3-H$.H,3"HH!H$H,HH!!H$$H))H,)g       @)__doc__loggingr   r   r   	anyio.abcr   	getLogger__name__r   floatr"        r!   <module>r+      sJ     	   			8	$-B -B% -BZ^ -Br*   