命令行解释器与内核/设备驱动程序的接口是否与普通 GUI 程序的接口方式相同?

Les*_*ker 1 command-line

例如,卸载是在文件系统中实现的。

更改视频分辨率是在计算机程序中实现的,该程序使用视频渲染硬件跟踪和管理监视器上的显示。

在命令行中,您可以更改分辨率(我已经在 Ubuntu 中这样做了,它本质上是 Linux)。

解析 Linux 内核 API 的命令接口是否类似于在 GUI 程序中执行此操作以更改分辨率,或者 CLI 是否在这种形式上有所不同?

希望我的问题不会太混乱。如果是,我会适当地编辑。

use*_*ser 7

在 Linux 中,GUI 应用程序和终端应用程序之间确实没有有意义的区别。实际上,X只是另一个应用程序——它恰好做了一些非常复杂的事情,但就操作系统而言,它并没有什么特别之处。X 可以做的任何事情,任何其他应用程序都可以做,最终,X 就是管理显示和输入设备,并公开一个统一的 API 来执行诸如绘制到屏幕和读取指点设备输入之类的事情,而不管底层是什么硬件。各种工具包(例如 Qt、GTK 和其他工具包)都建立在此基础上,以提供一种更高级的方法来开发用户空间应用程序,提供诸如输入文本框、菜单、可点击按钮、列表视图等高级功能。

一些 Linux 应用程序甚至公开了双用户界面,根据当前终端是否有显示器来选择使用哪一个。根据您是否需要 X 接口,更多具有单独的构建。示例可能是 Emacs 和 Vim。

这与例如 Windows 或(我相信)OS X 形成鲜明对比,其中 GUI 的所有意图和目的都是操作系统本身不可分割的一部分。以 Windows Server Core 为例;他们取消了资源管理器和一大堆其他东西,但他们将 GUI 保留在那里,除了默认情况下它只会让您进入命令提示符窗口!现在需要一些时间来适应。

Linux 内核不关心任何命令行,除了它自己的命令行(您可以通过引导管理器编辑的那个)。任何超出(包括$ PATH处理和文件名通配符)由用户空间应用,如GNOME桌面,使用bash shell,系统初始化应用程序(通常处理/ sbin目录/的init -尽管这是一个有点混合的部分之间内核和用户态程序与任何其他程序一样,它在用户空间中执行并且没有内核授予的特殊权限)、文本编辑器或您拥有的任何权限。

Ubuntu 并不是“本质上是 Linux 引擎”;它是一个 Linux 发行版,如 Debian、Slackware、RHEL、SuSE 或任何其他发行版。他们可能像几乎所有其他主流发行版一样打包自己的一些软件,但没有非 Linux 的东西。不过它与 Debian 密切相关,它可以在没有 Linux 的情况下使用(即 Debian/kFreeBSD,它与旧的 Debian 几乎相同,但运行在 FreeBSD 内核之上)。