温馨提示×

centos readdir在哪定义

小樊
41
2026-10-06 02:31:27
栏目: 智能运维

在 CentOS(以及其它 Linux 发行版) 中,readdir 并不是在某个具体的“源码文件”里“定义”成一个普通函数,而是 POSIX 标准定义的库函数接口,实现位于 C 库(glibc) 中。

下面分几层说明:


1. readdir 在哪里“声明”

头文件:

#include <dirent.h>

在 CentOS 上,声明位置通常是:

/usr/include/dirent.h

可用命令查看:

grep readdir /usr/include/dirent.h

2. readdir 在哪里“实现”

✅ glibc 中实现

CentOS 使用 glibc,源码在:

glibc/posix/readdir.c
glibc/dirent/        (多个 readdir 变体)

不同版本有:

  • readdir
  • readdir_r
  • readdir64
  • readdir64_r

示例(glibc 简化逻辑):

struct dirent *
readdir(DIR *dirp)
{
    ...
    return readdir64(dirp);
}

3. 系统调用层(真正读目录)

readdir 是 库函数,不是系统调用。

底层系统调用是:

  • getdents
  • getdents64

查看系统调用:

man 2 getdents

CentOS 内核实现(源码):

fs/readdir.c

4. 快速查看调用关系

# 查看 readdir 来自哪个库
ldd your_program
nm -D /lib64/libc.so.6 | grep readdir

总结一句话

CentOS 中 readdir 在 <dirent.h> 声明,由 glibc 实现,底层通过 getdents64 系统调用读取目录。

如果你是想:

  • 看 glibc 源码
  • 看内核怎么读目录
  • 或自己实现一个 readdir

可以告诉我,我可以给你具体源码路径或示例。

0 踩