Записать в стандартный поток подпроцесса Python без блокирования поведения connect () - PullRequest
0 голосов
/ 26 июня 2019

Как сделать этот вызов неблокирующим?osd_cat принимает входные данные только как PIPE, для которого требуется p.communicate() вызов, блокирующий процесс.Есть ли другой способ установить stdin в Popen?

p = subprocess.Popen(('osd_cat',
                      '-d',
                      '{}'.format(interval)),
                     stdin=subprocess.PIPE)
p.communicate(message)

1 Ответ

1 голос
/ 26 июня 2019

Метод p.communicate - это разовая сделка с точки зрения отправки данных в процесс.

Вместо этого пишите прямо в p.stdin. Если вы хотите получить вывод, вы можете прочитать строки из p.stdout. Обязательно передайте stdout=subprocess.PIPE в конструктор, прежде чем пытаться читать.

...