Linux 有多个虚拟控制台。Ctrl+ Alt+在这些控制台之间切换。当您从控制台 7 切换到控制台 2 时,输入和输出外围设备将从控制台 7 重新路由到控制台 2。当控制台 7 处于非活动状态时,它无法访问输入/输出外围设备:显示器上不显示屏幕、应用程序不接收键盘输入等。Fn
由于历史原因,声音输入和输出使用与键盘和鼠标等输入设备以及视频显示器完全不同的通道。控制台设备(操作系统中的抽象)涵盖键盘和视频,但不包括声音。Unix 系统上最常见的声音基本实现独立于该系统,并且使用声音外围设备的权限是根据组成员身份而不是控制台的所有权授予的。这实际上是设计上的缺陷。
Ubuntu 已经进行了设置,以便登录到控制台的会话只有他们才能访问音频设备。如果您切换控制台,您将无法访问音频设备,除非您也登录到其他控制台。这确实是从一开始就应该做的事情,但这并不是因为控制台界面的设计者没有考虑声音。
当您切换到另一个控制台时,您的程序会继续运行,因为 CPU 不与控制台相关联,而是与计算机相关联:任何在该计算机上拥有帐户的人都可以使用 CPU 时间。对于内存和文件等其他资源(受权限限制)也是如此。只有与用户的交互才受控制台所有权的控制。当您切换到未登录的控制台时,您的声音将停止播放,因为您的程序失去了访问声音输出设备的权限。
我相信 Ubuntu 通过Polkit实现访问控制,但我不知道它到底是如何工作的。