我正在编写一个程序来在Windows 10上为我做一些过程管理。

为了杀死不需要的进程,我使用以下命令:

import subprocess
subprocess.Popen("taskkill /F /im "+unwantedProcess, shell=True, stdout=subprocess.PIPE)


不需要的进程是我要杀死的进程的全名。我也尝试使用:

os.system("taskkill /F /im "+unwantedProcess)


现在,使用pyinstaller解释或编译它时,它可以正常工作。问题出在我使用

--noconsole


pyinstaller中的命令。它适用于所有其他实例,除非没有控制台(因为我不希望在后台打开控制台)。任何想法如何解决这个问题?

编辑:编辑代码后,我插入了一个非常基本的错误捕获语句,如下所示:

try:
    subprocess.Popen("taskkill /F /im skype.exe", shell=True, stdout=subprocess.PIPE)
except Exception as e:
    f = open("error.txt", "w")
    f.write(str(e))
    f.close()


以Skype为例进行杀戮。当使用控制台解释或编译程序时,它仍然可以成功杀死它。但是,当使用

--noconsole


命令再次在错误文件中得到以下输出:

[Error 6] The handle is invalid


当我运行该程序时,Skype肯定是开放的

最佳答案

您使用--no-console选项调用python的事实使您的进程不适合控制台I / O(即,您需要调用taskkill的东西)。

如果您确实想隐藏控制台并仍然具有有效的进程句柄,则可以使用不同的方法。查看this question的答案

关于python - Python杀死没有 shell 的进程,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34732686/

10-11 18:27