【发布时间】:2019-02-11 23:03:16
【问题描述】:
我需要在 py 2.7 中编写一个函数
激活时,它会关闭客户端的所有互联网连接(这是一个服务器-客户端套接字连接)
因为我不能只是让客户关闭互联网(因为那样我们将无法与他沟通)
我想运行一个线程。当处于活动状态时(当服务器向客户端发送“close_internet”时),线程会运行一个 while true 函数来关闭所有 浏览器(从而“关闭”其互联网连接)。我将列出线程将主动关闭的已知浏览器(不是全部)。
这行代码按名称关闭任何进程:
import os
import threading
def close_internet():
while 1:
try:
os.system('taskkill /f /im MicrosoftEdge.exe')
except:
pass
threading.Thread(target=close_internet, args=()).start()
当我运行此代码时,它确实有效,当我打开它时关闭资源管理器(资源管理器仅用于测试,您可以更改为 chrome.exe 或 firefox.exe)
但是,在控制台中,它总是会打印一些可怕的错误:
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
我能做什么?我只需要这个程序在后台运行,用户不会注意到这些错误。
当我没有打开资源管理器时,会出现错误(不足为奇)。
当我打开它时,它可以正常工作并打印:
ERROR: The process "MicrosoftEdge.exe" not found.
ERROR: The process "MicrosoftEdge.exe" not found.
SUCCESS: The process "MicrosoftEdge.exe" with PID 10808 has been terminated. # <-- this line
ERROR: The process "MicrosoftEdge.exe" not found.
该功能是在客户端编程的!
我该如何解决?
其次,这是按名称关闭进程的正确方法吗?它有效率吗?或者有没有更有效的方法来关闭一个进程(也许使用它的 PID 可以让它更快......)我想听听你的建议。
谢谢!
【问题讨论】:
-
帮助...?请...
标签: windows python-2.7 operating-system