o ?Og@sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdko9eed d Zejd Zd d Zeejej ZddZGdddeZdS)N) reductionget_spawning_popenset_spawning_popen)spawn)utilPopeniZwin32frozenFzpythonservice.execCs ||kptj|tj|kSN)ospathnormcase)Zp1Zp2rH/opt/alt/python310/lib64/python3.10/multiprocessing/popen_spawn_win32.py_path_eqs rcGs|D]}t|qdSr )_winapi CloseHandle)Zhandleshandlerrr_close_handless rc@sJeZdZdZdZddZddZddd Zd d Zd d Z e Z ddZ dS)rz@ Start a subprocess to run the code of a process object rc Cslt|j}tdd\}}t|d}tjt |d}d dd|D}t }t rAt |tjrAtj}tj}tj|d<nd}t|ddd b} zt||ddd d|dd \} } } } t| Wn t|| |_d|_| |_t| |_t|t|jt|f|_t|zt !|| t !|| WtdntdwWddS1swYdS) Nr)Z parent_pidZ pipe_handle css|]}d|VqdS)z"%s"Nr).0xrrr 9sz!Popen.__init__..__PYVENV_LAUNCHER__wbT)closefdF)"rZget_preparation_data_namerZ CreatePipemsvcrtZopen_osfhandleZget_command_liner getpidjoinZget_executableWINENVrsys executable_base_executableenvironcopyopenZ CreateProcessrpid returncode_handleintsentinelrZFinalizer finalizerrrdump)selfZ process_objZ prep_dataZrhandleZwhandleZwfdcmdZ python_exeenvZto_childZhpZhtr'tidrrr__init__,sH          "zPopen.__init__cCs|tusJt||jSr )rrZ duplicater+)r.rrrrduplicate_for_childaszPopen.duplicate_for_childNcCst|jdur7|dur tj}n tdt|dd}tt|j|}|tjkr7t|j}|t kr4t j }||_|jS)Nrig?) r(rZINFINITEmaxr*ZWaitForSingleObjectr)Z WAIT_OBJECT_0ZGetExitCodeProcess TERMINATEsignalSIGTERM)r.timeoutZmsecsrescoderrrwaites   z Popen.waitcCs |jddS)Nrr8)r;r.rrrpollu z Popen.pollcCsN|jdur%z tt|jtWdSty$|jdddur!YdSwdS)Ng?r<)r(rZTerminateProcessr*r)r5OSErrorr;r=rrr terminatexs  zPopen.terminatecCs |dSr )r,r=rrrcloser?z Popen.closer ) __name__ __module__ __qualname____doc__methodr2r3r;r>rAkillrBrrrrr&s5  )r rr6r!rcontextrrrrr__all__r5platformgetattrZWINEXEr"lowerendswithZ WINSERVICErr#r robjectrrrrrs