как опросить и выйти из подпроцесса - PullRequest
1 голос
/ 30 января 2012

Я хотел бы запустить процесс, подождать 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()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...