对子流程Popen手动处理标准DIN

2024-06-01 00:01:44 发布

您现在位置:Python中文网/ 问答频道 /正文

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

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

我希望有一个每次读取stdin时调用的函数,这样我就可以向用户请求输入

我用

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

我尝试使用临时文件并编辑文件中的readreadlinereadlines,但问题是如果我(从源代码)正确理解subprocess.Popen将该文件重新打开以使用它

我还尝试创建自定义的类似文件的对象,但正如我前面所说的subprocess.Popen获取文件并尝试重新打开它,但由于我的对象是一个伪文件,因此无法工作

如何创建stdinRedirector?

诸如此类

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

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

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

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

这不是重复的


Tags: and文件对象truereadinputoutputstderr