X11 将程序的输出“流”到 tty

X11 将程序的输出“流”到 tty

我使用bspwm一个简单的.xinitrc配置文件而不是显示管理器,并且那里只有一个简单的exec dbus-launch bspwm命令。

例如,每当我通过dmenu_run(它本身是在sxhkdbspwmrc文件之后启动的)启动一个程序时,该程序的输出会直接发送到启动 X 会话的 tty。例如,如果我运行echo它,它将把消息写入 tty,而不是仅仅忽略它(尽管根据我的理解,不应该有任何可以echo写入的文件描述符)。

最让我困惑的是,许多其他程序也可以写入标准输出(steam、firefox、mpv...),尽管也是通过dmenu_run.为什么?

最糟糕的是,一些程序(例如w3m)不仅显示其输出,而且即使在退出 X11 会话后仍保持交互。

为什么以及如何是否会发生这种情况?我该如何预防?

答案1

X11 可以这样运行,但它并不是真的应该这样运行(或者至少您必须接受 X11 显示服务器保留文件描述符并与它启动的任何子进程共享它们)。

如果您不喜欢它,请像大多数其他人一样通过会话管理器启动 X,或者将 X 会话的 stdout/stderr 重定向到文件。

相关内容