【转】 Linux内核中读写文件数据的方法--不错
原文网址:http://blog.csdn.net/tommy_wxie/article/details/8193954
有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据。在kernel中操作文件没有标准库可用,需要利用kernel的一些函数,这些函数主要有: filp_open() filp_close(), vfs_read()vfs_write(),set_fs(),get_fs()等,这些函数在linux/fs.h和asm/uaccess.h头文件中声明。下面介绍主要步骤:
1. 打开文件
filp_open()在kernel中可以打开文件,其原形如下:
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/init.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>
#define MY_FILE "/root/LogFile"
char buf[128];
struct file *file = NULL;
static int __init init(void)
{
mm_segment_t old_fs;
printk("Hello, I'm the module that intends to write messages to file.\n");
if(file == NULL)
file = filp_open(MY_FILE, O_RDWR | O_APPEND | O_CREAT, 0644);
if (IS_ERR(file)) {
printk("error occured while opening file %s, exiting...\n", MY_FILE);
return 0;
}
sprintf(buf,"%s", "The Messages.");
old_fs = get_fs();
set_fs(KERNEL_DS);
file->f_op->write(file, (char *)buf, sizeof(buf), &file->f_pos);
set_fs(old_fs);
filp_close(file, NULL);
file = NULL;
return 0;
}
static void __exit fini(void)
{
if(file != NULL)
filp_close(file, NULL);
}
module_init(init);
module_exit(fini);
MODULE_LICENSE("GPL");
转载于:https://www.cnblogs.com/wi100sh/p/5091036.html
【转】 Linux内核中读写文件数据的方法--不错相关推荐
- Linux内核中读写文件数据的方法
Linux内核中读写文件数据的方法 有时候需要在Linuxkernel--大多是在需要调试的驱动程序--中读写文件数据.在kernel中操作文件没有标准库可用,需要利用kernel的一些函数, ...
- 如何在linux内核中读写文件
在VFS的支持下,用户态进程读写任何类型的文件系统都可以使用read和write着两个系统调用,但是在linux内核中没有这样的系统调用我们如何操作文件呢?我们知道read和write在进入内核态之后 ...
- linux内核中读写文件
之前以为在内核中不能创建文件,其实不是这样子的,只要文件系统跑起来之后就可以像在用户空间一样操作文件. 用户空间 内核 open() ...
- Linux中文件描述符1,linux内核中的文件描述符(一)--基础知识简介
原标题:linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blo ...
- linux内核中打开文件 及属性控制
共两篇文章:还可以参考linux那些事linx_sysfs ====================================================================== ...
- linux内核中的文件描述符(一)--基础知识简介
linux内核中的文件描述符(一)--基础知识简介 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.cs ...
- 在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS)
在linux内核中操作文件的方法--使用get_fs()和set_fs(KERNEL_DS) #include <linux/kernel.h> #include <linux/mo ...
- linux内核中的文件描述符(四)--fd的分配--get_unused_fd
linux内核中的文件描述符(四)--fd的分配--get_unused_fd Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123( ...
- linux内核中的文件描述符(三)--fd的回收
linux内核中的文件描述符(三)--fd的回收 Kernel version:2.6.14 CPU architecture:ARM920T Author:ce123(http://blog.csd ...
最新文章
- 来自爸妈的敷衍问候!| 今日最佳
- python--OS模块,文件系统
- AndroidStudio安装教程(Windows环境下)
- 无法卸载_六月累积更新又出问题:打印机故障 部分程序无法打开和卸载
- Servlet的学习之Request请求对象(3)
- BZOJ3437:小P的牧场(斜率优化DP)
- 2015,鬼王Xun和GGL比赛,带给我们无尽的欢乐
- linux获取cpu数量函数,Linux上获取CPU Core个数的实现
- 整理总结:深入浅出统计学 —— 相关与回归
- ps模糊照片变清晰步骤东方逐梦
- 小技巧:办公邮箱怎么登录foxmail?outlook如何群发单显?
- 重装系统后有一个磁盘打不开,提示没有权限
- Python爬取上交所年报下载并转TXT
- [转载]Oraclenbsp;grantnbsp;revokenbsp;…
- Pycharm正版2022.2.2 | 官方翻译插件更新tkk失败解决
- 中文分词之维特比算法详解
- 分析了233部职场剧告诉你:国产职场剧为什么这么烂
- ios9系统无法下载应用问题分析与解决
- 第一代网络计算机功能,在计算机网络的发展历程中,第一代计算机网路主要实现什么功能...
- javaweb 项目打包部署教程
热门文章
- 16位汇编 在代码段中使用栈
- gcc编译C++程序
- 2019牛客暑期多校训练营(第十场)C - Gifted Composer (二分+哈希)
- Codeforces Round #529 (Div. 3) F. Make It Connected(最小生成树)
- MySQL探秘(二):SQL语句执行过程详解
- QLineEdit学习
- linux快捷命令补齐,Linux Shell简介——自动补齐/命令行的历史记录/编辑命令行/可用的 Shell 快捷方式.doc...
- [攻防世界 pwn]——CGfsb
- NDK建立多个共享库
- 华师大c语言作业答案,2018华东师范大学计算机系机试题目代码