我使用bspwm
一个简单的.xinitrc
配置文件而不是显示管理器,并且那里只有一个简单的exec dbus-launch bspwm
命令。
例如,每当我通过dmenu_run
(它本身是在sxhkd
源bspwmrc
文件之后启动的)启动一个程序时,该程序的输出会直接发送到启动 X 会话的 tty。例如,如果我运行echo
它,它将把消息写入 tty,而不是仅仅忽略它(尽管根据我的理解,不应该有任何可以echo
写入的文件描述符)。
最让我困惑的是,许多其他程序也可以写入标准输出(steam、firefox、mpv...),尽管也是通过dmenu_run
.为什么?
最糟糕的是,一些程序(例如w3m
)不仅显示其输出,而且即使在退出 X11 会话后仍保持交互。
为什么以及如何是否会发生这种情况?我该如何预防?
答案1
X11 可以这样运行,但它并不是真的应该这样运行(或者至少您必须接受 X11 显示服务器保留文件描述符并与它启动的任何子进程共享它们)。
如果您不喜欢它,请像大多数其他人一样通过会话管理器启动 X,或者将 X 会话的 stdout/stderr 重定向到文件。