Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 10, 2009 19:00:38

keph
От:
Зарегистрирован: 2008-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Баг в модуле subprocess или баг в программе?

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



Офлайн

#2 Фев. 10, 2009 21:15:50

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Баг в модуле subprocess или баг в программе?

poll вернет статус “на сейчас”
запущенный процесс может уже завершиться, а может еще и нет.
следует использовать вместо него wait



Офлайн

#3 Фев. 10, 2009 23:16:29

keph
От:
Зарегистрирован: 2008-02-15
Сообщения: 5
Репутация: +  0  -
Профиль   Отправить e-mail  

Баг в модуле subprocess или баг в программе?

Спасибо, я уже понял свою ошибку )))



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version