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