LINUX.ORG.RU

[python] subprocess communicate()

 


0

0

В скрипте открываю подпроцесс:
coolproc = subprocess.Popen("coolprog", stdin=subprocess.PIPE,\
stdout=subprocess.PIPE, stderr=subprocess.PIPE)

coolprog - это клевая прога, которая забирает из stdin данные из скрипта, затем в stdout отдает, затем забирает, затем отдает... И так много-много раз.
Скрипт должен соответсвенно в нее писать и читатать. Много раз, поочередно. Как это сделать?
coolproc.communicate(sendstring) - отправляет sendstring и ждет когда программа завершиться. А как отправить данные и забить? Или прочитать данные в цикле, пока ключевое слово не встретится

все получилось. бага была в другом

nbdarvin
() автор топика
Ответ на: комментарий от devinull

не нужно мне асинхронное на самом-то деле. надо ждать

nbdarvin
() автор топика
Ответ на: комментарий от true_admin

Из питоновской доки:

Warning

Use communicate() rather than .stdin.write, .stdout.read or .stderr.read to avoid deadlocks due to any of the other OS pipe buffers filling up and blocking the child process.

provaton ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.