Требуется больше информации о выполненной программе.
Я думаю, что ваша программа заканчивается, когда она stdin
закрыта.
Например, date
в Windows ожидает ввода и завершает работу при получении какого-либо ввода.
p2 = subprocess.Popen(["date"], stdout=subprocess.PIPE ,shell=True)
print(p2.returncode)
time.sleep(10)
print(p2.returncode)
print(p2.wait())
print(p2.returncode)
Это может быть решением для вас.Подождите некоторое время, прежде чем вызвать wait
.
Но было бы лучше узнать, как эта программа реагирует на разные входы и работает с stdin=subprocess.PIPE
и p2.communicate("some expected input")
.
Проверьте вывод программывы работаете.
p2 = subprocess.Popen(["date"], stdout=subprocess.PIPE, stderr=subprocess.PIPE ,shell=True)
print(p2.wait())
print(p2.stdout.readlines())
print(p2.stderr.readlines())
Это не решение, это процесс отладки.
Нет причин не работать с кодом, который вы дали.Так что это то, что вы не показали нам.Первый подозреваемый - программа, которую вы запускаете.