我正在制作一个程序,在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肯定是开放的
答案 0 :(得分:1)
您使用--no-console
选项调用python的事实使您的进程不适合控制台I / O(即您需要调用taskkill
)。
如果您确实想隐藏控制台并且仍然拥有有效的流程句柄,则可以采用不同的方法。查看this question
的答案