【问题标题】:How to destroy an .exe file(not converted from py) by run as the same script如何通过作为同一脚本运行来销毁 .exe 文件(不是从 py 转换的)
【发布时间】:2016-06-09 23:14:29
【问题描述】:

我有一个通过subprocess.Popen() 运行.exe 文件的脚本,但我刚刚意识到,即使我关闭我的脚本,.exe 文件也会继续运行。有没有办法通过它的名称或 ID 停止运行 .exe 文件?那个exe文件不是从py文件转换的,所以我卡住了。

【问题讨论】:

  • 你试过杀死进程吗? proc = subprocess.Popen(...),将代码包装在 try/finally 中调用 proc.kill()
  • proc.kill("anexe.exe") 像这样?
  • 我的意思是打电话proc.kill(),我对windows不太熟悉,但如果我说使用子进程启动vlc,如果我想杀死它,我只会调用proc.kill()或proc .terminate() 取决于我希望它停止的具体方式
  • @GLHF,不,只是proc.kill(),如果proc 是您分配Popen 对象的名称,正如Padraic 所说。

标签: python subprocess exe python-3.4


【解决方案1】:

如果您运行process = subprocess.Popen(...),那么您可以稍后使用process.terminate() 终止该进程。

如果子进程可以创建自己的子进程,那么process.terminate() 和/或process.kill() 可能还不够。在 Windows 上,您可能需要创建一个 Job 对象 并将 .exe 进程分配给它。在 Unix 上,您可以使用 start_new_session=True(在早期 Python 版本上为 preexec_fn=os.setsidpreexec_fn=os.setpgrp)加上 os.pgkill(process.pid, signal.SIGINT) 来杀死属于同一进程组的进程(或在 Linux 上使用 prctl(PR_SET_PDEATHSIG, ...),在父进程时发送信号死)。见

另请参阅,killableprocess.py

【讨论】:

    猜你喜欢
    • 2021-06-12
    • 2017-07-29
    • 1970-01-01
    • 1970-01-01
    • 2021-08-12
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 2019-02-09
    相关资源
    最近更新 更多