代码之家  ›  专栏  ›  技术社区  ›  Bananach

完全捕获对GNU屏幕的调用输出

  •  0
  • Bananach  · 技术社区  · 6 年前

    在我的Python 3程序中,我在某个时候打开了一个GNU屏幕会话。 在关闭此会话时,输出

    [screen is terminating]
    

    打印到周围的会话(运行python程序的终端)。我该如何预防?

    我现在正在运行

    import subprocess 
    subprocess.run('screen',stdout=subprocess.PIPE,stderr=subprocess.PIPE)
    

    通常 [stdout,stderr]=subprocess.PIPE 捕获输出和错误(例如 run('echo hello',stdout=subprocess.PIPE) 什么都没印)但由于某些原因这不适用 screen

    1 回复  |  直到 6 年前
        1
  •  2
  •   Leo K    6 年前

    你应该抓住 stderr 以及 stdout ,如果不想在控制台上打印任何内容。

    Screen 也可能检测到 stdin 是一个tty,用于I/O。我不知道是给它一个管道还是 /dev/null 会解决问题的。试试看是否有效。

    屏幕 很可能需要访问 tty 设备工作。你可以为它创建一个tty(通过打开 /dev/ptmx 以及给予 screen 相应的 /dev/pts/N 但这绝不是小事。