【问题标题】:Know if a processus still running with his command line, in python知道一个进程是否仍在用他的命令行运行,在 python
【发布时间】:2020-11-14 23:15:40
【问题描述】:

我有一个进程的命令,我想知道它是否还在用 python 运行。

我有命令行“java -Xms2000M ... nogui”

它是一个cmd窗口的子进程。

问题是:我不知道该怎么做, 我读了一些关于子进程模块和popen的东西,但是如果有人想启发我

谢谢。

【问题讨论】:

    标签: python subprocess popen


    【解决方案1】:

    您可以使用wmic 查询所有正在运行的 Windows 进程,将其包装在子进程调用中并根据您的需要过滤所有进程(java.exespigot-):

    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 格式,我只是要搜索整个字符串。

    【讨论】:

      猜你喜欢
      • 2022-10-11
      • 2010-09-20
      • 1970-01-01
      • 2013-01-01
      • 2011-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多