【发布时间】:2020-11-14 23:15:40
【问题描述】:
我有一个进程的命令,我想知道它是否还在用 python 运行。
我有命令行“java -Xms2000M ... nogui”
它是一个cmd窗口的子进程。
问题是:我不知道该怎么做, 我读了一些关于子进程模块和popen的东西,但是如果有人想启发我
谢谢。
【问题讨论】:
标签: python subprocess popen
我有一个进程的命令,我想知道它是否还在用 python 运行。
我有命令行“java -Xms2000M ... nogui”
它是一个cmd窗口的子进程。
问题是:我不知道该怎么做, 我读了一些关于子进程模块和popen的东西,但是如果有人想启发我
谢谢。
【问题讨论】:
标签: python subprocess popen
您可以使用wmic 查询所有正在运行的 Windows 进程,将其包装在子进程调用中并根据您的需要过滤所有进程(java.exe、spigot-):
import subprocess
def isProcessRunning(appName, argPattern):
command = 'wmic process get Caption,Processid,Commandline /format:csv'
cmd = subprocess.Popen(command, stderr=subprocess.PIPE, stdout=subprocess.PIPE, shell=False)
stdout, stderr = cmd.communicate()
if cmd.returncode == 0:
for line in stdout.decode('utf-8').split('\n'):
line = line.lower().strip()
if not line:
continue
if appName in line and argPattern in line:
print("Found:")
print(line)
return True
print(isProcessRunning('spotify.exe', 'renderer'))
输出:
Found:
vm-pc_win7,spotify.exe,"c:\users\f3k\appdata\roaming\spotify\spotify.exe" --type=renderer ... --product-version=spotify/1.1.43.700 --disable-spell-checking --device-scale-factor=1 --num-raster-threads=1 --renderer-client-id=4 --mojo-platform-channel-handle=2268 /prefetch:1,5148
True
注意:
wmic 返回 CSV 格式,我只是要搜索整个字符串。
【讨论】: