系统调用拦截mkdir所得的目录不是全路径的问题,终于找到解决办法。
时间:2010-07-19
来源:互联网
本帖最后由 zonelight 于 2010-07-19 20:43 编辑
复制代码
- asmlinkage long new_mkdir(const char __user *pathname,int mode)
- {
- /*创建一个nameidata结构体*/
- struct nameidata nd;
- /*nd这里赋值完后里面就含有全路径的信息了*/
- int ret = path_lookup(pathname,LOOKUP_DIRECTORY,&nd);
- /*打印出的是所创建的文件夹的名称,比如mydir*/
- printk("%s \n",nd.path.dentry->d_name.name);
- /*关键步骤,d_parent同样是一个dentry结构,指向父目录,如果全路径是/home/my/mydir/,那么这时候输出的就是my*/
- printk("%s \n",nd.path.dentry->d_parent->d_name.name);
- /*以此类推,一直往上推到根目录"/" */
- printk("%s \n",nd.path.dentry->d_parent->d_parent->d_name.name);
- return old_mkdir(pathname,mode);
- }
作者: zonelight 发布时间: 2010-07-19
LZ的实现方式就是通过多次打印目录的父目录,父目录的父目录来实现全路径,对吗
作者: accessory: 发布时间: 2010-07-20
是,要是有一部到位的方法就好了,这么一个个父目录弄出来以后还要再做字符窜的连接。
作者: Godbach 发布时间: 2010-07-20
是的。如果一个目录比较深的话,需要调用好多次
作者: zonelight 发布时间: 2010-07-20
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28