在没有 communicate() 阻塞行为的情况下写入 Python 子进程的标准输入
Write to a Python subprocess's stdin without communicate()'s blocking behavior
如何将其设为非阻塞调用? osd_cat
仅接受作为 PIPE
的输入,需要 p.communicate()
调用使进程阻塞。有没有其他方法可以在 Popen
中设置 stdin
?
p = subprocess.Popen(('osd_cat',
'-d',
'{}'.format(interval)),
stdin=subprocess.PIPE)
p.communicate(message)
p.communicate
方法是 one-shot 处理向进程发送数据。
而是直接写入 p.stdin
. If you want to get output, you can read lines from p.stdout
。确保在尝试读取之前将 stdout=subprocess.PIPE
传递给构造函数。
如何将其设为非阻塞调用? osd_cat
仅接受作为 PIPE
的输入,需要 p.communicate()
调用使进程阻塞。有没有其他方法可以在 Popen
中设置 stdin
?
p = subprocess.Popen(('osd_cat',
'-d',
'{}'.format(interval)),
stdin=subprocess.PIPE)
p.communicate(message)
p.communicate
方法是 one-shot 处理向进程发送数据。
而是直接写入 p.stdin
. If you want to get output, you can read lines from p.stdout
。确保在尝试读取之前将 stdout=subprocess.PIPE
传递给构造函数。