- 论坛徽章:
- 0
|
本帖最后由 crazyhadoop 于 2011-11-12 07:56 编辑
版主不好意思,刚才我发过这么一个贴子,但让我自己给搞乱, 所以重新发一次。。
问题是,我在内核中用如下程序去读一个文件,结果却比预期的内容多了一些莫名其妙的东西
我想要的是文件中仅有的64字节的内容,结果却不是 , 求解释。- int kreadf(char str[], int n)
- {
- struct file *filp;
- mm_segment_t old_fs;
- ssize_t rlen;
- char *buffer;
- filp = filp_open(opt_file, O_RDONLY, 0);
- if(IS_ERR(filp)){
- printk(KERN_EMERG"open file erro\n");
- return 1;
- }
- old_fs = get_fs();
- set_fs(KERNEL_DS);
- buffer = kmalloc(64, GFP_KERNEL);
- rlen = filp->f_op->read(filp, buffer, 64, &filp->f_pos);
- memcpy(str, buffer ,64);
- printk(KERN_EMERG"size of string: %d\n", strlen(buffer));
- printk(KERN_EMERG"buffer: %s\n", buffer);
- printk(KERN_EMERG"size of string: %d\n", strlen(str));
- printk(KERN_EMERG"get str: %s\n", str);
-
- filp_close(filp, NULL);
- set_fs(old_fs);
- return 0;
- }
复制代码 运行的结果如下,预期的内容是0BEC2A3E392E2C353DF6C79860B17700DDDBB13051C0505FE17C0C27BD037983
:[code]Message from syslogd@ at Thu Nov 3 02:33:43 2011 ...
localhost kernel: size of string: 76
Message from syslogd@ at Thu Nov 3 02:33:43 2011 ...
localhost kernel: buffer: 0BEC2A3E392E2C353DF6C79860B17700DDDBB13051C0505FE17C0C27BD037983J |
|