我使用Python中的子包运行一个子进程,这是我后来需要杀死。 然而,子包的文档指出终止()函数是仅可从2.6
我们正在与2.5运行Linux和向后兼容性的原因,我不能升级到2.6,什么是另类? 我猜测,这些功能对于一些方便的方法。
我使用Python中的子包运行一个子进程,这是我后来需要杀死。 然而,子包的文档指出终止()函数是仅可从2.6
我们正在与2.5运行Linux和向后兼容性的原因,我不能升级到2.6,什么是另类? 我猜测,这些功能对于一些方便的方法。
你叫os.kill的进程PID。
os.kill(process.pid, signal.SIGKILL)
因为你是在Linux上你行。 Windows用户的运气了。
要完成@加雷思的答案,在Windows上你做的:
import ctypes
PROCESS_TERMINATE = 1
handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, theprocess.pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)
不是很优雅的os.kill(theprocess.pid, 9)
但它的工作;-)
为了完成@加雷思的和@Alex答案,如果你不想与下伏系统打扰,你可以使用psutil 。
psutil是提供通过使用Python,落实命令行工具,如PS,上面提供了许多功能,杀死和Windows任务管理器取回与在便携方式运行的进程和系统利用率(CPU,内存)的信息的接口的模块。
它目前支持Linux,OS X,FreeBSD和窗户用Python版本从2.4到3.1,通过使用独特的代码库。
那是一个复制和PASE完整的解决方案:
def terminate_process(pid):
# all this shit is because we are stuck with Python 2.5 and
# we cannot use Popen.terminate()
if sys.platform == 'win32':
import ctypes
PROCESS_TERMINATE = 1
handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, pid)
ctypes.windll.kernel32.TerminateProcess(handle, -1)
ctypes.windll.kernel32.CloseHandle(handle)
else:
os.kill(pid, signal.SIGKILL)
接受错误报告的意见;)