博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用READDIR和多线程下的READDIR_R读取目录
阅读量:7041 次
发布时间:2019-06-28

本文共 1436 字,大约阅读时间需要 4 分钟。

书上只说了用第一个函数在多线程下会不安全,

为什么不安全,也没有说,只是取嘛,现在想不太通。

是为记。。

1 [root@localhost ccode]# cat readdir_exp.c  2 #include 
3 #include
4 #include
5 6 int main(int argc, char *argv[]) 7 { 8 DIR *dirp; 9 struct dirent *dp;10 dirp = opendir(argv[1]);11 while((dp = readdir(dirp)) != NULL)12 {13 if(dp->d_name[0] == '.')14 continue;15 printf("inode = %d\t", dp->d_ino);16 printf("reclen = %d\t", dp->d_reclen);17 printf("name = %s\n", dp->d_name);18 }19 closedir(dirp);20 return 0;21 }
1 [root@localhost ccode]# cat readdir_r_exp.c  2 #include 
3 #include
4 #include
5 6 int main(void) 7 { 8 DIR *dirp; 9 struct dirent *dp1 = malloc(sizeof(struct dirent));10 struct dirent *dp2 = malloc(sizeof(struct dirent));11 dirp = opendir(".");12 while(1)13 {14 if((readdir_r(dirp, dp1, &dp2)) != 0)15 {16 perror("readdir");17 exit(EXIT_FAILURE);18 }19 if(dp2 == NULL)20 break;21 if(dp2->d_name[0] == '.')22 continue;23 printf("inode = %d\t", dp2->d_ino);24 printf("reclen = %d\t", dp2->d_reclen);25 printf("name = %s\n", dp2->d_name);26 }27 closedir(dirp);28 free(dp1);29 free(dp2);30 return 0;31 }

我试过了,输出都一样的。。

转载地址:http://wnqal.baihongyu.com/

你可能感兴趣的文章
Web 开发学习笔记(3) --- 申请和部署HTTPS证书
查看>>
js解决0.1+0.2==0.3的问题的几种方法
查看>>
vue+node全栈移动商城【7】路由跳转-注册页面
查看>>
PHP中exec()函数执行系统命令失败
查看>>
Netty+SpringBoot+FastDFS+Html5实现聊天App详解(三)
查看>>
Nacos系列:基于Nacos的配置中心
查看>>
企业服务,赛道决定路径
查看>>
CNCF多元化奖学金系列:让微服务、Kubernetes和云原生连接
查看>>
Webpack学习-工作原理(下)
查看>>
30秒的PHP代码片段(3)字符串-String & 函数-Function
查看>>
Django-Signals信号量
查看>>
使用 Debian 从 0 开始搭建 hexo 博客
查看>>
Unity C# 计算导弹抛物线弹道和转向
查看>>
区块链技术入门应用
查看>>
一幅图解释区块链结构
查看>>
Service Worker
查看>>
Leaflet-Develop-Guide
查看>>
vue跳转传参刷新后参数消失
查看>>
恭喜 containerd 毕业
查看>>
egg学习笔记-1
查看>>