diff --git a/docs/world-compat-details/index.md b/docs/world-compat-details/index.md index 5cfcd59e..9e09a20a 100644 --- a/docs/world-compat-details/index.md +++ b/docs/world-compat-details/index.md @@ -702,7 +702,7 @@ glibc 提供了两个函数,可以被用于注册信号处理函数,这两 其中,`fstat` 可以获取一个打开的文件描述符(file descriptor, fd)所对应的文件的元数据; 而 `newfstatat` 则既可以获取一个打开的文件描述符所对应的文件的元数据,也可以获取一个路径所对应的文件的元数据。 在操作对象上,`statx` 与 `newfstatat` 是一致的,但是可以按需返回更多的信息。因此,在功能上, -`statx` 是 `fstat` 和 `newfstatat` 的超集,并取代了这两个系统调用。 +`statx` 是 `fstat` 和 `newfstatat` 的超集,并曾被部分开发者认为取代了这两个系统调用 (这也是早期新世界内核不提供 `fstat` 和 `newfstatat` 的原因)。 在 2.38 版本的 glibc 中,所有 `*stat*` 函数会在编译期通过预处理指令检查该版本 glibc 技术状态冻结时最新发布的内核版本[^7] (对于 glibc-2.38 是 6.3 版本) 是否提供了 `fstat` 或 `newfstatat` 的定义。 如果没有,那么这些函数会调用 `statx`[^8] 并负责转换数据结构。这意味着,与旧世界相比,这些 `*stat*` 函数对外呈现的行为是不变的,