gpt4 book ai didi

c - POSIX和C语言有什么关系?

转载 作者:IT王子 更新时间:2023-10-29 00:47:41 24 4
gpt4 key购买 nike

我理解C语言是一个ISO standard ,我可以从维基百科看到该标准包括 29 header files ,并且符合这些头文件,C 应用程序在理论上是“可移植的”。

然而,实际上,我最近尝试在 simple C HTTP server 上做一个教程使用不属于 C 标准的头文件。因此,在这种情况下,我能想到的最简单的应用程序 - 包含单个 int main(void) 函数的 C 应用程序,并且少于 100 行,目的是监听网络接口(interface)超出了 C 标准?

在这种情况下,作为规范的 C 语言与作为语言的 POSIX 规范(假设我正在为 Linux 编写应用程序)之间的关系是什么?

据我所知,“man7.org”提供了一个 C 头文件列表,这些文件定义了所有 Unix/Linux 系统(我假设这与“POSIX”相同)系统的 API,如以及 Linux 平台的系统调用列表。

这包括 82 个头文件,其中 29 个 C 标准库头文件是一个子集,以及大约 10000 个系统调用(至少我假设 this list 中的所有不是头文件的都是系统调用)。

我假设任何用 C 语言编写的功能合理的程序都将超越标准库并使用操作系统特定的头文件。将应用程序编程为在 Linux 上运行实际上是“POSIX 编程”不是更准确吗?

我想也可以坚持使用标准库,并为跨 POSIX 和非 POSIX 系统(包括特定于平台的汇编例程)的可移植逻辑实现定义自定义头文件。这曾经做过吗?

最佳答案

POSIX 不是一种语言的规范,它是一种操作系统的规范,只是其中的一部分是更广泛的 C 库规范和对 C 语言本身需要的额外限制在此类操作系统上实现。

有许多流行的跨平台库。一个流行的库涉及 POSIX C 规范最关心的领域是 Apache Portable Runtime :

The mission of the Apache Portable Runtime (APR) project is to create and maintain software libraries that provide a predictable and consistent interface to underlying platform-specific implementations. The primary goal is to provide an API to which software developers may code and be assured of predictable if not identical behaviour regardless of the platform on which their software is built, relieving them of the need to code special-case conditions to work around or take advantage of platform-specific deficiencies or features.

APR 包括类似 socket 的内容s 和 threads and processes并且可以用于为各种操作系统编译相同的应用程序 - 许多类 unix 和 Windows - 只需很少的更改。

关于c - POSIX和C语言有什么关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56188679/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com