猿问

Python:Popen().stdout.peek() 挂起

我正在尝试将类似 REPL 的命令行程序集成到 Python 项目中。命令行程序接受一个输入字符串并返回一个输出字符串,它在单独运行时工作正常。问题是,当我尝试使用Popen().stdout.peek()或.read()时,它会挂起并且不产生输出。


>>> p = Popen('Test.exe', stdin=PIPE, stdout=PIPE, stderr=PIPE)

>>> p.stdin.write(bytes('message\n', 'utf-8'))

8

>>> p.stdin.flush()

>>> p.stdout.peek()  # Hangs

有趣的是,如果命令行程序也是用 Python 编写的,这确实有效,但是当使用我真正想使用的程序时,它会挂起。在命令行中手动运行时,这两个程序都按预期运行。我也不能使用,p.communicate('message')因为进程是有状态的,我需要执行多个命令。


慕娘9325324
浏览 215回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答