当前位置: 技术问答>linux和unix
请教在内核中如何读写文件
来源: 互联网 发布时间:2016-08-22
本文导语: 我是一个linux刚入门的学生,有个问题问一下吧里的高手。我想在内核里面修改一段代码,具体来说就是读取一个proc文件的内容,但是编译时不正确,说没有这个头文件。但是我在用户态就可以实现我要的功能。以下...
我是一个linux刚入门的学生,有个问题问一下吧里的高手。我想在内核里面修改一段代码,具体来说就是读取一个proc文件的内容,但是编译时不正确,说没有这个头文件。但是我在用户态就可以实现我要的功能。以下是用户态下的代码
#include
#include
#include
#include
int main()
{
int fd,size;
char buffer[10];
fd=open("/proc/hidden",O_RDONLY);
size=read(fd,buffer,sizeof(buffer));
close(fd);
if(*buffer=="0")
printf("%s",buffer);
return 1;
}
请问如果我想在内核代码fs/proc/base.c中加入一段可以这样读写proc文件的代码,应该怎么写!打扰了,谢谢啊~
#include
#include
#include
#include
int main()
{
int fd,size;
char buffer[10];
fd=open("/proc/hidden",O_RDONLY);
size=read(fd,buffer,sizeof(buffer));
close(fd);
if(*buffer=="0")
printf("%s",buffer);
return 1;
}
请问如果我想在内核代码fs/proc/base.c中加入一段可以这样读写proc文件的代码,应该怎么写!打扰了,谢谢啊~
|
以下被我写成了lkm ,你只要把testkernel_init_module()里的代码拿来用就好了
那就是对/proc/intterrupts的读取10个字节的操作
至于如何添加到内核的合适位置来判断是否应该隐藏,还是你自己决定吧
那就是对/proc/intterrupts的读取10个字节的操作
至于如何添加到内核的合适位置来判断是否应该隐藏,还是你自己决定吧
#include
#include
#include
#include
#include
#include
struct file *fp=NULL;
MODULE_DESCRIPTION("My kernel module");
MODULE_AUTHOR("root (root@localhost.localdomain)");
MODULE_LICENSE("Dual BSD/GPL");
int fd;
static int testkernel_init_module(void)
{
char buf[10];
//参见http://blog.csdn.net/hqzh1234/archive/2008/06/14/2546798.aspx
mm_segment_t old_fs = get_fs();
set_fs(KERNEL_DS);
fp = filp_open("/proc/interrupts", O_RDONLY,0);
if(IS_ERR(fp))
{
printk("Can't open file: /proc/interruptsn");
goto out;
}
fp->f_op->read(fp, buf, 10,&fp->f_pos) ;
if(*(int *)buf==0)
{
}
else
{
}
filp_close(fp,0);
out:
set_fs(old_fs);
return 0;
}
static void testkernel_exit_module(void)
{
printk( KERN_DEBUG "Module testkernel exitn" );
sys_close(fd);
}
module_init(testkernel_init_module);
module_exit(testkernel_exit_module);