gpt4 book ai didi

c++ - 在我的 linux 中调用了哪个版本的 close(),来自 posix lib 还是内核?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:18:36 27 4
gpt4 key购买 nike

当我 man -a close 时,第一页是 POSIX 手册页,然后我有一个 close(2),(2 表示系统 api 或内核 func ).这意味着至少有 2 个版本的 close()

例如,这样的一段代码:

int fd = open("xxx");
........
close(fd); -----here, which version is called,
is that one from the POSIX lib, or the raw system API?

P.S.: 因此我的 linux 系统包含一个用于大多数系统 API 调用的 POSIX 包装器,如何辨别我的代码是调用 POSIX lib 还是原始系统 API?

最佳答案

POSIX 不是一个库,它是一个标准。手册页的 POSIX 版本告诉您 POSIX 标准规定函数应该做什么(以及该页面基于哪个 POSIX 版本)。如果您仅依赖本页中描述的行为,您的代码应该适用于所有实现 POSIX 标准的系统(只要它们实现了足够新的版本)。

联机帮助页的 Linux 版本会告诉您该函数在您的系统上的实际作用。在绝大多数情况下,此处描述的行为将是 POSIX 页面中描述的行为的超集,即 Linux 行为将遵守 POSIX 标准,但它也可能定义 POSIX 未定义的情况,或者函数可能接受POSIX 未强制要求的其他选项。

如果您依赖于 POSIX 未指定的任何行为,您的代码可能只能在 Linux 系统上运行。

关于c++ - 在我的 linux 中调用了哪个版本的 close(),来自 posix lib 还是内核?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11257047/

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