内核态下删除文件操作函数问题
下面的一段代码有问题吗?
int remove_file(char *filename)
{
char *filename = NULL;
int ret = 0;
struct nameidata nd;
struct dentry *dentry;
ret = path_lookup(filename, LOOKUP_PARENT, &nd);
if (ret != 0)
{
return -ENOENT;
}
dentry = lookup_one_len(nd.last.name, nd.dentry, strlen(nd.last.name));
if (IS_ERR(dentry))
{
path_release(&nd);
return -EACCES;
}
vfs_unlink(nd.dentry->d_inode, dentry);
dput(dentry);
path_release(&nd);
return 0;
}
好像不能用,请教了
int remove_file(char *filename)
{
char *filename = NULL;
int ret = 0;
struct nameidata nd;
struct dentry *dentry;
ret = path_lookup(filename, LOOKUP_PARENT, &nd);
if (ret != 0)
{
return -ENOENT;
}
dentry = lookup_one_len(nd.last.name, nd.dentry, strlen(nd.last.name));
if (IS_ERR(dentry))
{
path_release(&nd);
return -EACCES;
}
vfs_unlink(nd.dentry->d_inode, dentry);
dput(dentry);
path_release(&nd);
return 0;
}
好像不能用,请教了
作者: wmiss414 发布时间: 2010-12-10
int remove_file(char *filename)
{
char *filename = NULL; ****************************这句话有问题,参数已经有了。
int ret = 0;
struct nameidata nd;
struct dentry *dentry;
ret = path_lookup(filename, LOOKUP_PARENT, &nd);
if (ret != 0)
{
return -ENOENT;
}
dentry = lookup_one_len(nd.last.name, nd.dentry, strlen(nd.last.name));
if (IS_ERR(dentry))
{
path_release(&nd);
return -EACCES;
}
vfs_unlink(nd.dentry->d_inode, dentry);
dput(dentry);
path_release(&nd);
return 0;
}
{
char *filename = NULL; ****************************这句话有问题,参数已经有了。
int ret = 0;
struct nameidata nd;
struct dentry *dentry;
ret = path_lookup(filename, LOOKUP_PARENT, &nd);
if (ret != 0)
{
return -ENOENT;
}
dentry = lookup_one_len(nd.last.name, nd.dentry, strlen(nd.last.name));
if (IS_ERR(dentry))
{
path_release(&nd);
return -EACCES;
}
vfs_unlink(nd.dentry->d_inode, dentry);
dput(dentry);
path_release(&nd);
return 0;
}
作者: chenzufei 发布时间: 2011-02-17