C 标准库中包含哪些内容?

Kor*_*gay 3 c linux standards posix language-lawyer

我将给出GNU C 库文档中的一个示例:

13.1 打开和关闭文件

本节介绍使用文件描述符打开和关闭文件的原语。open 和 creat 函数在头文件 fcntl.h 中声明,而 close 函数在 unistd.h 中声明。

我的问题是:

可以unistd.h并被fcntl.h视为标准C吗?据我所知,它们应该是Posix 标准的一部分?

我们可以说 C 标准库 = Posix 函数 + C API 吗?我很困惑,因为C 标准库的维基百科页面不包含unistd.h它,但 GNU C 库文档包含它?

Yu *_*Hao 5

不,unistd.hfcntl.h等不是标准C。

一般来说,标准 C 不包含处理低级文件操作的函数。例如,fopenfread、 和fwrite是标准 C 库的一部分。虽然 POSIX open, read,write函数不是标准 C.

  • @KorayTugay,POSIX(Unix 的现代形式)是一个接口规范而不是实现。Linux 作为操作系统是 POSIX 实现。实现如何收集不同的特征由其自行决定。大多数 Linux 发行版使用 glibc 作为 C (amd POSIX) 库的实现,但有些发行版不这样做。相同接口的另一个实现是 musl。 (2认同)