Как уничтожить файл .exe(не преобразованный из py), запустив его как те же script

У меня есть script, который запускает файл .exe через subprocess.Popen(), но я просто понял, что .exe файл продолжает работать даже после закрытия моего script. Есть ли способ остановить запуск .exe файла по имени или идентификатору? Этот файл exe не преобразован из файла py, поэтому я застрял.

Ответы

Ответ 1

Если вы запустите process = subprocess.Popen(...), вы можете завершить процесс позже, используя process.terminate().

Если подпроцесс может создавать свои собственные дети, то process.terminate() и/или process.kill() может быть недостаточно. В Windows вам может потребоваться создать объект Job и назначить ему процесс .exe. В Unix вы можете использовать start_new_session=True (preexec_fn=os.setsid или preexec_fn=os.setpgrp для более ранних версий Python) плюс os.pgkill(process.pid, signal.SIGINT) для уничтожения процессов, принадлежащих к той же группе процессов (или prctl(PR_SET_PDEATHSIG, ...) в Linux, для отправки сигнала, когда родительский умирает). См.

См. также killableprocess.py