在 CentOS 里,readdir 不是一个可以单独“升级”的软件包,而是 glibc(GNU C Library) 提供的系统调用/库函数。所以“升级 readdir”通常是升级 glibc 或更新系统。
下面按常见情况说明:
rpm -q glibc
或
ldd --version
CentOS 版本对应的 glibc 大致如下:
| CentOS | glibc |
|---|---|
| 7 | 2.17 |
| 8 | 2.28 |
| 9 | 2.34 |
不要手动编译替换 glibc,否则系统可能直接无法启动。
sudo yum update # CentOS 7
sudo dnf update # CentOS 8 / 9
这会自动更新:
更新后 readdir 行为会随 glibc 版本变化。
例如:
⚠️ 大版本升级风险高,建议:
常见不是 readdir 本身,而是:
df -h
ls -la 目录
readdir() → 非线程安全readdir_r() → 已废弃readdir() + 单线程,或 getdents()示例(C):
struct dirent *entry;
DIR *dir = opendir(".");
while ((entry = readdir(dir)) != NULL) {
printf("%s\n", entry->d_name);
}
closedir(dir);
升级基础镜像:
FROM centos:9
使用新 toolchain,而不是升级系统 glibc。
CentOS 中 readdir 不能单独升级,只能通过升级 glibc 或系统版本来实现。
如果你能补充:
我可以给你更精确的方案。