Shell,内核和API有什么区别?

我想了解这是如何适用于操作系统以及不是操作系统的东西。我不明白三者之间的区别和本质。 API是我们可以调用函数,但是什么是Shell?如果我们有一个API,那就是操作系统的内核呢?我理解一个操作系统有一个不会改变的核心,这个核心是一个典型的操作系统的基础工作,而我们可能会有不同的用户界面,如GUI或命令行与同一个内核。所以问题是我很困惑这些事情是如何不同的。 Aaaaaaarhg!

C中的printf和fopen这样的函数可以称为API调用吗?

> shell是一个命令解释器,即处理您在终端仿真器(交互模式)中输入的命令或进程shell脚本(包含命令的文本文件)(批处理模式)的程序。在早期的Unix时代,它曾经是用户与其机器交互的独特方式。如今,图形环境正在替代大部分休闲用户的外壳。
>内核是一个与硬件(cpu,RAM,磁盘,网络,…)接口的低级程序,其中应用程序正在运行。它是运行在计算机上的最低级别的程序,尽管虚拟化可以让多个内核运行在其他操作系统之上运行的虚拟机之上。
> API是一个通用术语,定义开发人员在使用库和编程语言编写代码时必须使用的界面。内核没有API,因为它们不是库。他们确实有一个ABI,除了别的以外,它们通过系统调用来定义应用程序如何与他们进行交互。 Unix应用程序开发人员使用标准C库(例如:libc,glibc)来构建符合ABI标准的二进制文件。 printf(3)和fopen(3)不是系统调用的包装器,而是(g)libc标准配置。他们最终使用的低级系统调用是写(2)和打开(2),可能还有其他类似于brk,mmap。括号中的数字是一个约定,告诉在什么手册中找到命令。

Unix手册页的第一卷包含shell命令。

第二个包含系统调用包装器,如写入和打开。它们形成与内核的接口。

第三个包含标准库(包括Unix标准API)功能(不包括系统调用),如fopen和printf。这些不是特定系统调用的包装器,只是在需要时使用系统调用代码

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...