Chinaunix首页 | 论坛 | 博客
  • 博客访问: 934933
  • 博文数量: 376
  • 博客积分: 154
  • 博客等级: 入伍新兵
  • 技术积分: 1558
  • 用 户 组: 普通用户
  • 注册时间: 2011-10-13 08:42
文章分类

全部博文(376)

文章存档

2014年(11)

2013年(88)

2012年(260)

2011年(17)

分类:

2012-02-14 09:40:32

原文地址:内核态下实现mv文件 作者:wmiss414

int rename_file(char *old_filename, char *new_filename)
{
    char *from = old_filename;
    char *to = new_filename;
    int ret = 0;
    struct nameidata old_nd, new_nd;
    struct dentry *old_dentry, *new_dentry;

    ret = path_lookup(from, LOOKUP_PARENT, &old_nd);
    if (ret != 0)
    {
         return -ENOENT;
    }
    ret = path_lookup(to,LOOKUP_PARENT, &new_nd);
    if (ret != 0)
    {
         return -ENOENT;
    }
    old_dentry = lookup_one_len(old_nd.last.name, old_nd.path.dentry, strlen(old_nd.last.name));
    if (IS_ERR(old_dentry))
    {
          //path_release(&nd);
          return -EACCES;
    }
    
    new_dentry = lookup_one_len(new_nd.last.name, new_nd.path.dentry, strlen(new_nd.last.name));
    if (IS_ERR(new_dentry))
    {
          //path_release(&new_nd);
          return -EACCES;
    }
    vfs_rename(old_nd.path.dentry->d_inode, old_dentry, new_nd.path.dentry->d_inode, new_dentry);

   dput(old_dentry);
   dput(new_dentry);
//path_release(&nd);

   return 0;
   
}

先这么实现内核态下的文件移动吧
阅读(186) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~