a
    7ñ»j‘  ã                   @   s„   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Z
dZg Zdd„ Zdd	œd
d„Zdd„ Ze e¡ dS )é    N)Úsuppress)ÚPIPE)ÚPopeni   é   c                 G   s^   ddl }| d¡\}}|jt| g|¢R d|idd� ¡  | ¡ }t |¡ | ¡  | ¡  |S )záStarts a fully independent subprocess with no parent.
    :param executable: executable
    :param args: arguments to the executable,
        eg: ["--param1_key=param1_val", "-vvv"]
    :return: pid of the grandchild process r   NFÚwriterT)ÚtargetÚargsÚkwargsÚdaemon)	ÚmultiprocessingZPipeÚProcessÚ_start_detachedÚstartÚrecvÚ
REGISTEREDÚappendÚclose)Ú
executabler   r   Úreaderr   Úpid© r   úFE:\soccer\ml_env\Lib\site-packages\seleniumbase/undetected/dprocess.pyÚstart_detached   s    
ü

r   )r   c                G   sd   i }t  ¡ dkr"|jttB d� n|jdd� t| g|¢ftttdœ|¤Ž}| |j¡ t	 
¡  d S )NÚWindows)ÚcreationflagsT)Ústart_new_session)ÚstdinÚstdoutÚstderr)ÚplatformÚsystemÚupdateÚDETACHED_PROCESSÚCREATE_NEW_PROCESS_GROUPr   r   Úsendr   ÚsysÚexit)r   r   r   r	   Úpr   r   r   r   '   s    ÿÿÿÿr   c               	   C   s`   dd l } tD ]N}ttƒ�2 t t¡ d| ¡ t 	|| j
¡ W d   ƒ q1 sP0    Y  qd S )Nr   zcleaning up pid %d )Úsignalr   r   Ú	ExceptionÚloggingÚ	getLoggerÚ__name__ÚdebugÚosÚkillÚSIGTERM)r(   r   r   r   r   Ú_cleanup8   s
    
r1   )r.   r%   Úatexitr*   r   Ú
contextlibr   Ú
subprocessr   r   r#   r"   r   r   r   r1   Úregisterr   r   r   r   Ú<module>   s   	