Невозможно получить PID процесса по имени в python - PullRequest
2 голосов
/ 26 апреля 2019

У меня есть очень простой кусок кода

import subprocess
print(subprocess.check_output(["pidof","ffmpeg"]))

, который должен печатать PID (ы) процессов с именем ffmpeg (см. здесь ).Тем не менее, я всегда получаю следующую ошибку:

subprocess.CalledProcessError: Command '['pidof', 'ffmpeg']' returned non-zero exit status 1

для python2 и python3.Что я делаю не так?

Ответы [ 2 ]

1 голос
/ 26 апреля 2019

вы можете использовать try, за исключением того, что во избежание блокирования выполнения

используйте это

import subprocess

try:

    print(subprocess.check_output(["pidof","ffmpeg"]))
except subprocess.CalledProcessError:
    print("no process named ffmpeg")

вы получаете ошибку, потому что если pidof ffmpeg не дает вывода, и с использованием print(subprocess.check_output(["pidof","ffmpeg"])) мыожидая вывода от этой команды.

также вы можете использовать

print(subprocess.getoutput("pidof ffmpeg"))

, который не выдаст ошибку, даже если вывод этой команды none

если вы проверите метод библиотеки check_output вы можете найти это

def check_output(*popenargs, timeout=None, **kwargs):
    r"""Run command with arguments and return its output.

    If the exit code was non-zero it raises a CalledProcessError.  The
    CalledProcessError object will have the return code in the returncode
    attribute and output in the output attribute.

    The arguments are the same as for the Popen constructor.... """
1 голос
/ 26 апреля 2019

С man pidof:

EXIT STATUS
       0      At least one program was found with the requested name.

       1      No program was found with the requested name.

У вас просто нет процесса с именем ffmpeg.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...