求助:linux内核态获取文件大小为什么一直是 7

sara_lei 2013-09-25 04:44:59
写了个驱动的小程序,测试获取文件大小,
通过filp_open打开文件,读inode->i_size得到的文件大小为什么一直是 7

#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/string.h>
#include <linux/mm.h>
#include <linux/syscalls.h>
#include <asm/unistd.h>
#include <asm/uaccess.h>

static int __init test_init(void)
{
mm_segment_t old_fs;
char *FileName = "/etc/test";
struct file *pstFile = NULL;
struct inode *inode = NULL;
int iSize = 0;

pstFile = filp_open(FileName, O_RDWR, 0);

old_fs = get_fs();
set_fs(KERNEL_DS);
inode = pstFile->f_dentry->d_inode;
iSize = inode->i_size;
printk("file(%s) size=%d\n", FileName, iSize);

filp_close(pstFile, 0);

return 0;

}


static void __exit test_exit(void)
{

}

module_init(test_init)
module_exit(test_exit)
MODULE_LICENSE("GPL");
...全文
267 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
sara_lei 2013-09-25
  • 打赏
  • 举报
回复
现在发现同样的测试程序在别的环境下能正常读文件大小;但是在我这个环境下无论读什么文件,大小都是7; 两个环境的内核有一点点差别,到底可能是内核的哪里出问题了呢?
Hony杨 2013-09-25
  • 打赏
  • 举报
回复
难道“/etc/test”不是7个bytes?

4,436

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 内核源代码研究区
社区管理员
  • 内核源代码研究区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧