【问题标题】:Is The GNU C Library an implementation of OS programming interface, or beyond that (a comprehensive C library)?GNU C 库是操作系统编程接口的实现,还是超越它(一个综合的 C 库)?
【发布时间】:2016-03-03 21:35:09
【问题描述】:

The GNU C Library

  • 操作系统编程接口的实现或
  • 一个范围比 OS 编程接口更大的综合 C 库?

根据维基百科https://en.wikipedia.org/wiki/GNU_C_Library, GNU C 库是 GNU 项目对the C standard library 的实现。但它也有超出 C 标准库的扩展。

当我开始阅读 Kerrisk 的 APUE 和 The Linux Programming Interface 时,在我看来,示例中使用的头文件来自 GNU C 库。这个对吗?如果是,GNU C 库是否可以被视为 POSIX 兼容 OS 的编程接口,例如 Linux 的编程接口?

GNU C 库的范围是否比 POSIX 更大,例如,通常不被视为操作系统编程接口一部分的主题?如果是,那么我可能会将 GNU C 库视为 C 库,因为它不仅仅是关于 OS 编程接口。例如,GNU C 库中的以下主题是否被视为 OS 编程接口的一部分:

  • 搜索和排序,
  • 模式匹配,
  • 一些高级数学函数

谢谢。

【问题讨论】:

  • 您包含的标头来自您的操作系统使用的任何标准库。
  • 你能指定Linux吗? Linux 使用什么标准库? APUE 和 Linux 编程接口这两本书的示例中的标头来自哪个库?
  • 可能 glibc 它是 Linux 系统上使用最广泛的,但是你有哪个库是一个实现细节,不知道你为什么需要知道这个。

标签: c linux glibc


【解决方案1】:

兼容 POSIX 的 OS 编程接口还是只是一个 C 库?

有什么区别? POSIX 用 C 库来描述系统接口。它描述了 C 头文件的内容,其中包含 C 语言中的函数、宏和类型声明。

POSIX 平台可以直接用 POSIX 中描述的 C 语言编程,也可以用 C++ 直接编程,因为它具有非常高的 C 兼容性;对于其他语言,您需要特殊的绑定。

GNU C 库的许多特性都是由 POSIX 一致性驱动的。没有用户空间组件的 Linux 内核不符合 POSIX。然而,GNU C 库中的许多特性都需要内核支持。如果没有内核支持,它们要么根本无法完成,要么无法以符合 POSIX 的方式完成。

【讨论】:

  • 谢谢。 GNU C 库的范围是否超过 POSIX,例如,不被视为操作系统编程接口一部分的主题?如果是,那么我可能会将 GNU C 库视为 C 库,因为它不仅仅是关于 OS 编程接口。
  • 当然 GNU C 库的范围比 POSIX 多;就像几乎所有 POSIX 系统上的 C 库一样。 POSIX 是一种可移植性标准。 glibc 中有一些 glibc-only 函数。一些 POSIX 的东西起源于 GNU C 库。例如,glibc 支持基于 C stdio 的字符串流:您可以使用 fmemopen 创建一个从缓冲区读取或写入缓冲区的 FILE * 流。早在 1990 年代早期,Glibc 就已经出现了。它现在也在 POSIX 中(截至 2008 年)。
【解决方案2】:

当我开始阅读 Kerrisk 的 APUE 和 The Linux Programming Interface 时,在我看来,示例中使用的头文件来自 GNU C 库。这是正确的吗?

如果这些书籍包含来自第三方头文件的代码,无论是 GNU 的还是其他人的,那么他们应该将其归属于适当的来源。看看他们怎么说。如果他们确实提供了第三方头代码,那么 GNU C 库是一个可能的来源,但 Linux 发行版可以提供不同的 C 库,有些提供。

GNU C 库是 POSIX 兼容的 OS 编程接口的实现还是只是一个 C 库?

在我看来,GNU C 库自己的文档比 Wikipedia 或您自己对其标题的分析是更好的信息来源。那些文档claim that the GNU C library is compliant with ISO/IEC 9945-1:1996,又名 POSIX.1。

【讨论】:

    【解决方案3】:

    GNU C 库绝不仅仅是标准 C 库。 除了 ISO C 之外,它还实现了 introduction part of its documentation 中描述的其他几个标准(包括几个 POSIX 标准)。

    您从 glibc 获得的确切功能集通过 feature test macros 控制。

    有关该库的详细文档,请参阅 https://www.gnu.org/software/libc/manual/html_mono/libc.html

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 2021-03-28
      • 1970-01-01
      • 2020-02-10
      • 1970-01-01
      • 2013-03-12
      • 2022-12-04
      • 1970-01-01
      相关资源
      最近更新 更多