gpt4 book ai didi

c - 为什么 fstat(2) 和 fstat(3) 都存在,我应该使用哪一个?

转载 作者:行者123 更新时间:2023-12-05 03:18:05 25 4
gpt4 key购买 nike

我试图阅读 fstat 的手册页,我得到了 fstat(2) , fstat(3)fstat(3P) .

过去使用过 system (2) 命令,我知道不同之处在于我必须自己编写一个原型(prototype)来宣布该功能(这反射(reflect)在 fstat(2) 手册页中)。

但我从未见过一个函数同时是 C 函数 (3) 和系统函数 (2)。使用一个比另一个有什么好处? C 甚至如何区分我使用的是 (2) 还是 (3)。

此外,我知道 sys/stat.h 是特定于平台的,那么 (2) 和 (3) 中哪一个对于跨平台使用更安全?因为我在 Windows page example 中没有看到原型(prototype)行,我假设它是 (3)

请解释这是因为我无法理解为什么两者都会存在。

最佳答案

基于 Web 的联机帮助页始终是次佳选择,因为它们只能向您展示界面的一般 View 。如果你在你自己的系统上使用 man 命令(至少对于类 Unix 系统),结果应该反射(reflect)你的实际安装,假设你已经正确安装了你的发行版的文档。

手册的第 2 部分旨在描述系统调用而不是标准库 API。然而,至少在 Linux 文档的情况下,第 2 节还用于描述围绕系统调用的库包装器,它有效地记录了标准 C 库(通常是 glibc)实现的特定功能。在这种情况下,第 3P 节用于记录从 Posix 标准中提取或改编的文档。因此,如果您想编写可移植代码,请仅使用 3P 部分中记录的功能。如果您乐于使用系统上所有可用的扩展,请使用第 2 部分。

man7.orglinux.die.net使用不同的联机帮助页存储库;对于后者,第 3P 部分不存在,Posix 编程手册位于第 3 部分。所以 https://www.man7.org/linux/man-pages/man3/fstat.3p.htmlhttps://linux.die.net/man/3/fstat包含相同的信息。如果您使用 Linux 发行版,您可能会发现 man 3 fstat 实际上为您提供了第 3p 节中的页面。

无论如何,C库中只有一个接口(interface),它应该符合Posix标准,但可以扩展它。

关于c - 为什么 fstat(2) 和 fstat(3) 都存在,我应该使用哪一个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73856015/

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