Skip to content

Commit

Permalink
world-compat-details: statx has not really superseded fstat and newfs…
Browse files Browse the repository at this point in the history
…tatat

The Linux kernel is technically a personal project of Linus, who hates
"statx superseds fstat and newfstatat" with a passion.  Thus in Linux
the superseding has never really happened.
  • Loading branch information
xry111 committed Jan 9, 2025
1 parent fccf787 commit 109b5ae
Showing 1 changed file with 1 addition and 1 deletion.
2 changes: 1 addition & 1 deletion docs/world-compat-details/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -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*` 函数对外呈现的行为是不变的,
Expand Down

0 comments on commit 109b5ae

Please sign in to comment.