首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与交互式程序通信时进程挂起

与交互式程序通信时进程挂起
EN

Stack Overflow用户
提问于 2019-07-15 17:08:01
回答 2查看 61关注 0票数 1

我创建了一个简单的echo.py,如下所示:

代码语言:javascript
复制
import sys

while True:
    s = sys.stdin.readline()
    s = s.strip('\n')
    if s == 'exit':
        break

    sys.stdout.write("You typed: %s\n" % s)

它在终端上运行良好。

和另一个名为main.py的与echo.py交互的程序

代码语言:javascript
复制
import subprocess

if __name__ == '__main__':
    proc = subprocess.Popen(['python', 'echo.py'],stdin=subprocess.PIPE,
                            stdout=subprocess.PIPE,stderr=subprocess.PIPE)

    proc.stdin.write(b'Hello\n')
    proc.stdin.flush()
    print(proc.stdout.readline())

    proc.stdin.write(b'Hello World\n')
    proc.stdin.flush()
    print(proc.stdout.readline())

    proc.terminate()

main.py永远挂起。问题是,如果我用['python', '-i']创建子进程,它就能工作。

EN

Stack Overflow用户

回答已采纳

发布于 2019-07-15 18:04:16

sys.stdout.flush()添加到echo.py。如果使用Popen而不是终端运行进程,则缓冲的工作方式会有所不同。

票数 1
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57036500

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档