sandbox.pty 模块可以创建交互式终端会话,用于运行命令、接收输入,并可在运行中调整大小——适用于 REPL 和调试器、需要提示输入的交互式 CLI,以及需要监控的长时间运行进程。
注意: PTY 由其进程 ID(
pid)标识,该 ID 由 create() 返回句柄上提供。发送输入、调整大小、连接和终止时都需传入该 pid。输出以原始字节形式传递给回调函数。创建 PTY
创建一个 PTY,并通过回调接收其输出。它会返回一个句柄,其pid 用于标识该 PTY。
发送输入
通过pid 向运行中的 PTY 发送输入。数据为原始字节。
调整 PTY 大小
当终端窗口尺寸发生变化时,调用resize。
连接到运行中的 PTY
通过pid 连接到已在运行的 PTY。可以通过 sandbox.commands.list() 获取正在运行的进程。返回的句柄会通过回调接收后续输出。
终止 PTY
kill 使用 SIGKILL 终止 PTY。如果 PTY 被成功终止则返回 true;如果找不到对应 pid 的 PTY 则返回 false。
交互式示例
创建一个 PTY,发送一条需要提示输入的交互式命令,然后等待其结束并读取退出码。在 Python 中,wait(on_pty=...) 会将输出流式传递给回调并返回结果。