1

当 Iman -a close时,第一页是 POSIX 手册页,然后我有一个close(2), (2 表示系统 api 或内核函数)。这意味着至少有 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?

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

4

2 回答 2

5

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

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

如果您依赖 POSIX 未指定的任何行为,您的代码可能仅适用于 Linux 系统。

于 2012-06-29T06:45:22.213 回答
3

“这意味着至少有 2 个版本的 close()。”

不,这意味着关闭文档有 2 个版本。

于 2012-06-29T06:32:08.753 回答