Как выполнить неблокирующий скрипт в python и получить его код возврата? - PullRequest
0 голосов
/ 19 февраля 2020

Я пытаюсь выполнить неблокирующий скрипт bash из python и получить его код возврата. Вот моя функция на данный момент:

def run_bash_script(script_fullname, logfile):
    my_cmd = ". " + script_fullname + " >" + logfile +" 2>&1"
    p = subprocess.Popen(my_cmd, shell=True)
    os.waitpid(p.pid, 0)
    print(p.returncode)

Как видите, все выходные данные перенаправляются в файл журнала, который я могу отслеживать во время выполнения процесса bash.

Однако последняя команда просто возвращает «Нет» вместо полезного кода завершения.

Что я здесь не так делаю?

1 Ответ

1 голос
/ 19 февраля 2020

Вы должны использовать p.wait() вместо os.waitpid(). os.waitpid() - это API низкого уровня, и он ничего не знает об объекте Popen, поэтому не может касаться p.

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