Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Python: Общие вопросы > Баг в модуле subprocess или баг в программе?


Автор: keph 10.2.2009, 20:07
Привет. Уже несколько недель не могу разобраться с поведением модуля subprocess. И под Windows, и под Linux проблема одна и та же: метод poll() возвращает то None, то числовой код. Как описано в документации None возвращается, если процесс не завершён, в противном случае 0 (успешное выполнение команды) или любой др. числовой код ошибки. При чём такая нестабильность наблюдается при выполнении одной и той же команды.
Вот код:
Код

import subprocess

def run_command(command):
    s = subprocess.Popen(command, shell=True, stdin=None, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
    stdout = s.stdout.read()
    stderr = s.stderr.read()
    # s.kill() - этот метод не работает под Windows, под Linux он проблему всё равно не решает!!!
    rc = s.poll()
    res = (rc == 0)
    return res, rc, stdout, stderr

rc по непонятным причинам то None, то числовое значение, при чём даже закономерность когда и что возвращается я определить не могу.
Кто-нибудь знает в чём проблема?

Автор: Daevaorn 10.2.2009, 22:49
Так, а какой вы результат ожидаете от вызова poll?

Автор: keph 11.2.2009, 00:18
Спасибо, я уже понял свою ошибку, вместо poll() нужно использовать wait()

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)