写入到Python子进程的stdin中,而没有communication()的阻塞行为

时间:2019-06-26 15:58:13

标签: python linux subprocess blocking

如何将其设为无障碍通话? osd_cat仅接受PIPE的输入,而需要进行p.communicate()调用来阻塞该过程。还有其他方法可以在stdin中设置Popen吗?

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

1 个答案:

答案 0 :(得分:1)

就将数据发送到流程而言,p.communicate方法是一口气。

相反,直接写到p.stdin。如果要输出,可以从p.stdout中读取行。在尝试读取之前,请确保将stdout=subprocess.PIPE传递给构造函数。