在Python中监控进程?
我觉得这个问题挺基础的,但还是想问一下。
我需要写一个Python脚本,用来检查一个程序,比如说notepad.exe,是否正在运行。如果这个程序正在运行,就什么都不做。如果没有运行,就启动它。请问该怎么做呢?
我在Windows XP上使用Python 2.6。
3 个回答
15
在Python 2.6及之后的版本中,os
模块中的进程创建功能已经不再推荐使用了,现在大家更倾向于使用subprocess
模块。
if 'notepad.exe' not in subprocess.Popen('tasklist', stdout=subprocess.PIPE).communicate()[0]:
subprocess.Popen('notepad.exe')
需要注意的是,在Python 3中,检查的字符串需要是字节对象,所以应该是这样的:
if b'notepad.exe' not in [blah]:
subprocess.Popen('notepad.exe')
(要启动的文件或进程的名称不需要是字节对象。)
4
有几个选择,
1: 最简单但也比较粗糙的方法就是对以下内容进行一些文本处理:
os.popen('tasklist').read()
2: 另一个更复杂的选择是使用pywin32,并研究win32的API,找出当前正在运行的进程。
3: 还有WMI(我刚刚找到这个),这里有一个vbscript的例子