gpt4 book ai didi

python - 使用python pty伪终端进程发送命令并退出

转载 作者:行者123 更新时间:2023-11-28 17:51:40 26 4
gpt4 key购买 nike

使用 python pty 模块,我想将一些命令发送到终端仿真器,使用一个函数作为标准输入(作为 pty 模块想要的),然后强制退出。我想到了类似的东西

import pty
cmnds = ['exit\n', 'ls -al\n']
# Command to send. I try exiting as last command, but it doesn't works.

def r(fd):
if cmnds:
cmnds.pop()
# It seems is not executing sent commands ('ls -al\n')
else:
# Can i quit here? Can i return EOF?
pass

pty.spawn('/bin/sh', r)

谢谢

最佳答案

首先,pty 模块不允许您与运行 Python 的终端仿真器通信。相反,它允许 Python 伪装成终端仿真器。

查看 pty.spawn() 的源代码,看起来它旨在让衍生进程在运行时接管 Python 的标准输入和标准输出,这不是您想要的.

如果您只想生成一个 shell,向它发送命令并读取输出,您可能需要 Python 的 subprocess 模块(特别是,如果您只想运行一个命令,则subprocess.Popen 类的 .communicate() 方法会有帮助)。

如果您真的非常需要子进程在 pty 而不是管道中运行,您可以使用 os.openpty() 分配一个主文件描述符和一个从文件描述符。使用从属文件描述符作为子进程的标准输入和标准输出,然后将您的命令写入主文件描述符并从中读取响应。

关于python - 使用python pty伪终端进程发送命令并退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8710829/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com