Привет. Уже несколько недель не могу разобраться с поведением модуля 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, то числовое значение, при чём даже закономерность когда и что возвращается я определить не могу.
Кто-нибудь знает в чём проблема?