首页 > 代码库 > readdir_r()读取目录内容

readdir_r()读取目录内容

readdir()在多线程操作中不安全,Linux提供了readdir_r()实现多线程读取目录内容操作。

#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>

int main(void)
{
    DIR* dirp;
    struct dirent *dp1=malloc(sizeof(struct dirent));
    struct dirent *dp2=malloc(sizeof(struct dirent));
    dirp=opendir(".");
    while(1)
    {
        if((readdir_r(dirp,dp1,&dp2))!=0)
        {
            perror("readdir_r");
            exit(EXIT_FAILURE);
        }
        if(dp2==NULL)
            break;
        if(dp2->d_name[0]==.)
            continue;
        printf("inode=%d\t",dp2->d_ino);
        printf("reclen=%d\t",dp2->d_reclen);
        printf("name=%s\n",dp2->d_name);
    }
    close(dirp);
    free(dp1);
    free(dp2);
    return 0;
}