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;
}
readdir_r()读取目录内容,布布扣,bubuko.com
时间: 2024-07-29 03:44:15