Я хотел бы запустить процесс, подождать 2 секунды и распечатать все, что находится в каналах stderr и stdout, а затем выйти. Вот код, который у меня есть, и он не работает так, как хотелось бы. Что я делаю не так?
Есть 3 вопроса:
- Программа в том виде, в каком она есть, печатает «выполнено», затем ожидает
suprocess для завершения перед печатью первой строки.
- В таком виде скрипт читает одну строку. Как читать до конца текущего буфера?
завершится ли подпроцесс, если завершится вызывающий скрипт? Если да, то как мне изменить
вызов функции, чтобы подпроцесс работал до завершения, даже если
вызывающий скрипт завершает работу?
cmdStr = "./stepper.py"
proc = subprocess.Popen(cmdStr, shell=True, bufsize=-1, stderr=subprocess.PIPE, stdout=subprocess.PIPE)
print "polling"
time.sleep(2)
print "done"
print proc.stdout.readline()
Вот как выглядит stepper.py:
out = open("stepper.log", 'w')
for idx in range(3):
time.sleep(2)
print "Idx",idx
sys.stdout.flush()
out.write("%d\n"%(idx))
print "fnished"
out.write("cloing\n")
out.close()