3 2a @sddlZddlZddlZddlZddlZddlmZmZmZddl m Z ddl m Z dgZ dZ ejdkoreed d Zejjjd ZGd ddeZdS) N) reductionget_spawning_popenset_spawning_popen)spawn)utilPopeniwin32frozenFzpythonservice.exec@s:eZdZdZddZddZd ddZd d Zd d ZdS)rrc Cstj|j}tjdd\}}tj|d}tjtj |d}dj dd|D}t |ddd}y4tj tj |ddd dddd \}} } } tj| Wntj|YnX| |_d|_||_t||_tj|tj|jft|ztj||tj||WdtdXWdQRXdS) Nr)Z parent_pidZ pipe_handle css|]}d|VqdS)z"%s"N).0xr r 6/opt/alt/python36/lib64/python3.6/popen_spawn_win32.py )sz!Popen.__init__..wbT)closefdF)rZget_preparation_data_name_winapiZ CreatePipemsvcrtZopen_osfhandleZget_command_lineosgetpidjoinopenZ CreateProcessZget_executableZ CloseHandlepid returncode_handleintsentinelrZFinalizerrdump) selfZ process_objZ prep_dataZrhandleZwhandleZwfdcmdZto_childZhpZhtrtidr r r__init__ s2      zPopen.__init__cCstj||jS)N)rZ duplicater)r Zhandler r rduplicate_for_childEszPopen.duplicate_for_childNcCst|jdkrn|dkrtj}ntdt|dd}tjt|j|}|tjkrntj|j}|t krht j }||_|jS)Nrig?) rrZINFINITEmaxrZWaitForSingleObjectrZ WAIT_OBJECT_0ZGetExitCodeProcess TERMINATEsignalSIGTERM)r timeoutZmsecsrescoder r rwaitIs   z Popen.waitcCs |jddS)Nr)r))r,)r r r rpollYsz Popen.pollc CsL|jdkrHytjt|jtWn&tk rF|jdddkrBYnXdS)Ng?)r))rrZTerminateProcessrrr&OSErrorr,)r r r r terminate\s  zPopen.terminate)N) __name__ __module__ __qualname__methodr#r$r,r-r/r r r rrs % )rrr'sysrcontextrrrrr__all__r&platformgetattrZWINEXE executablelowerendswithZ WINSERVICEobjectrr r r rs