Найти - Пользователи
Полная версия: Баг в модуле subprocess или баг в программе?
Начало » Python для новичков » Баг в модуле subprocess или баг в программе?
1
keph
Привет. Уже несколько недель не могу разобраться с поведением модуля 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, то числовое значение, при чём даже закономерность когда и что возвращается я определить не могу.
Кто-нибудь знает в чём проблема?
Андрей Светлов
poll вернет статус “на сейчас”
запущенный процесс может уже завершиться, а может еще и нет.
следует использовать вместо него wait
keph
Спасибо, я уже понял свою ошибку )))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB