我正在编写一个程序来在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/