linux

Linux readdir与readdir_r的区别

小樊
43
2025-06-10 01:18:30
栏目: 智能运维

readdirreaddir_r 都是用于读取目录内容的函数,但它们之间存在一些关键区别,主要体现在线程安全性和使用方式上。以下是对这两个函数的详细比较:

readdir

  1. 定义
  1. 原型
struct dirent *readdir(DIR *dirp);
  1. 参数
  1. 返回值
  1. 线程安全性
  1. 使用示例
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
    perror("opendir");
    return 1;
}

struct dirent *entry;
while ((entry = readdir(dir)) != NULL) {
    printf("%s\n", entry->d_name);
}

closedir(dir);

readdir_r

  1. 定义
  1. 原型
int readdir_r(DIR *dirp, struct dirent *entry, struct dirent **result);
  1. 参数
  1. 返回值
  1. 线程安全性
  1. 使用示例
DIR *dir = opendir("/path/to/directory");
if (dir == NULL) {
    perror("opendir");
    return 1;
}

struct dirent entry;
struct dirent *result;
int ret;

while ((ret = readdir_r(dir, &entry, &result)) == 0 && result != NULL) {
    printf("%s\n", result->d_name);
}

closedir(dir);

总结

通过了解这些区别,可以根据具体的应用场景选择合适的函数来读取目录内容。

0
看了该问题的人还看了