首页 > 解决方案 > 为 subprocess.Popen 手动处理标准输入

问题描述

我正在尝试制作一个终端仿真器,为此我需要处理stdin/stdout/stder将它们重定向到 GUI

我已经设法处理stdout and stderr了,问题是stdin

我想要一个每次stdin读取时调用的函数,这样我就可以请求用户输入。

我用

subprocess.Popen("command", shell="True")

我尝试使用临时文件和编辑文件read,但问题是如果我理解正确(从源代码)获取文件并重新打开它以使用它。readlinereadlinessubprocess.Popen

我也尝试过创建像对象一样的自定义文件,但正如我之前所说,subprocess.Popen获取文件并尝试重新打开它,但由于我的对象是一个假文件,它不起作用

我怎样才能创建一个标准输入重定向器?

类似的东西

class StdinRediector():
    def read():
        input = gui.ask_input()
        return input

subprocess.Popen(
    "command",
    shell="True",
    stdin=StdinRediector,
)

我不要求,stdout and stderr因为这里已经有答案:

但是这些并没有谈论stdin哪个是我的问题。

这不是重复的

标签: pythonsubprocessstdin

解决方案


推荐阅读