免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2353 | 回复: 6
打印 上一主题 下一主题

在linux内核里怎么调用opendir和readdir? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-10-19 15:01 |只看该作者 |倒序浏览
opendir是不是可以用sys_open(name,O_DIRECTORY,mode)代替?

论坛徽章:
0
2 [报告]
发表于 2006-10-19 16:06 |只看该作者
opendir和readdir等都是库函数,想在内核中调用是不可能的。  Unix把directory看作file, 在file_operations中有readdir成员,inode_operations中有rmdir/mkdir成员。  对于具体的文件系统, 以ext3为例, 则有ext3_dir_operations和ext3_dir_inode_operations。  这些是从磁盘read inode时初始化的。

只能说到这里了, 如果这个任务让我实现, 我会边读书边用代码探索。。。。

论坛徽章:
0
3 [报告]
发表于 2006-10-19 16:47 |只看该作者
那opendir在哪里呢?

论坛徽章:
0
4 [报告]
发表于 2006-10-19 17:00 |只看该作者
就是open

论坛徽章:
0
5 [报告]
发表于 2006-10-19 17:42 |只看该作者
我看了file_operations这个结构,里面定义
int (*readdir) (struct file *, void *, filldir_t);
int (*open) (struct inode *, struct file *);

这些函数需要一个file的结构,但是我只有一个目录名,那我怎么用这两个函数啊?
而且库函数里的opendir返回一个DIR型的指针,然后readdir的参数就是这个指针。
而这个里面的open的返回值是一个int型,那readdir和open岂不是没有联系了?

论坛徽章:
0
6 [报告]
发表于 2006-10-20 08:47 |只看该作者

execve

用这个函数试试,要改下数据段才行.

论坛徽章:
0
7 [报告]
发表于 2006-10-20 09:45 |只看该作者
原帖由 yanshi1984 于 2006-10-20 08:47 发表
用这个函数试试,要改下数据段才行.


这个函数不是用来执行程序的吗?和目录有什么关系啊?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP