You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用subprocess.Popen调用ssh出现奇怪缩进空格递增问题

问题原因与解决方案

原因分析

你遇到的缩进递增问题,是因为ssh默认会请求分配伪终端(PTY)。即便你重定向了stdout和stderr到DEVNULL,ssh进程仍会修改当前终端的行处理属性(比如开启自动缩进、调整换行模式),导致后续print输出的文本被逐步缩进。

解决方案

在ssh命令中添加-T参数,强制禁用伪终端分配,这样ssh就不会修改终端的默认设置了:

from subprocess import Popen, DEVNULL
from time import sleep
# 添加-T参数阻止ssh分配伪终端
Popen(["ssh", "-T", "-R", "80:127.0.0.1:8080", "localhost.run"], stdout=DEVNULL, stderr=DEVNULL)
while True:
    print("Hi")
    sleep(1)

如果上述方法无效,还可以尝试添加close_fds=True参数,确保子进程完全脱离当前终端的文件描述符:

Popen(["ssh", "-T", "-R", "80:127.0.0.1:8080", "localhost.run"], 
      stdout=DEVNULL, stderr=DEVNULL, close_fds=True)

内容的提问来源于stack exchange,提问作者KasRoudra

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 09:06:30