是不是每个程序都必须通过shell来完成他们愿意做的过程?

Sri*_*esh 3 gui command-line bash kernel

我在某处看到过“bash 用于与 Linux 内核通信”。

是否只适用于终端?或者每个程序(包括具有 GUI 的程序)都必须通过 shell 来完成它们愿意执行的过程吗?

(假设我们正在给照片上色。bash 如何知道我们在做什么?gimp 和 bash 之间是否有第三方将它们转换为 bash?)

如果您能举个例子来解释的话,那将非常有帮助:)

mur*_*uru 6

没有。只有用户必须通过 shell 才能与内核进行通信。应用程序使用API

例如,如果我想删除一个文件,我必须使用一个 shell 或另一个 shell,然后使用一个应用程序来删除该文件:

  1. 通过命令行界面 (CLI) shell,例如bash,我可以使用rm命令来删除文件。
  2. 通过 GUI shell(如 Unity 或 GNOME Shell),我可以使用其他工具(例如文件管理器)来删除文件。GUI shell 则不需要使用 CLI shell。

文件管理器和rm反过来都可以使用unlink(3)(或更高级别remove(3))函数(或系统调用)来完成实际工作。