linux filp open,诚意请教一个filp_open的问题。
诚意请教一个filp_open的问题。
发布时间:2007-04-13 10:52:19来源:红联作者:keith_269
诚意请教一个filp_open的问题。
大家应该都知道filp_open(const char * filename, int flags, int mode)是打开文件用的。但我是个菜鸟,遇见个问题,如果filename=NULL时打开的是哪个文件,是pwd显示的当前目录吗,还是另有高深含义?请高手不吝指教!
谢先!
其实我在看下面的代码,通过vfs层来劫持系统调用。但不知道这个opt_fs为什么为NULL,为什么要对NULL的文件截获readdir这个函数???
望不吝赐教!!!
MODULE_AUTHOR("xunil@BMY");
MODULE_DESCRIPTION("By utilizing the VFS filesystem, this module can capture
system calls.");
MODULE_LICENSE("GPL");
char *opt_fs=NULL; //
typedef int (*readdir_t)(struct file *,void *,filldir_t);
readdir_t orig_opt_readdir=NULL;
int myreaddir(struct file *fp,void *buf,filldir_t filldir)
{
int r;
printk("<1>You got me partner!\n");
r=orig_opt_readdir(fp,buf,filldir);
return r;
}
int patch_vfs(const char *p,readdir_t *orig_readdir,readdir_t new_readdir)
{
struct file *filep;
filep=filp_open(p,O_RDONLY,0);//if(IS_ERR(filep))
return -1;
if(orig_readdir)
*orig_readdir=filep->f_op->readdir;
filep->f_op->readdir=new_readdir;
filp_close(filep,0);
return 0;
}
int unpatch_vfs(const char *p,readdir_t orig_readdir)
{
struct file *filep;
filep=filp_open(p,O_RDONLY,0);
if(IS_ERR(filep))
return -1;
filep->f_op->readdir=orig_readdir;
filp_close(filep,0);
return 0;
}
static int patch_init(void)
{
patch_vfs(opt_fs,&orig_opt_readdir,myreaddir);
printk("<1>VFS is patched!\n");
return 0;
}
static void patch_cleanup(void)
{
unpatch_vfs(opt_fs,orig_opt_readdir);
printk("<1>VFS is unpatched!\n");
}
module_init(patch_init);
module_exit(patch_cleanup);
linux filp open,诚意请教一个filp_open的问题。相关推荐
- linux 汇编语言ldreq,请教一个中断句柄的问题 - ARM技术论坛-ARM嵌入式论坛-人气最火爆ARM学习论坛 - 21ic电子技术开发论坛...
首先,谢谢大家能够进来看我的这个问题. 我想请教一个问题: 代码: NoInt EQU 0x80 USR32Mode EQU 0x10 SVC32Mode EQU 0x13 SYS ...
- linux c语言修改文件的时间属性,请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。...
请教一个关于用标准C语言修改文件创建时间.修改时间和访问时间的问题. 标准C里面有没有这种方法呢?我需要在Unix下运行,具体的是Solaris 9下,把某个目录下的所有文件的这三个时间属性都改成某年 ...
- linux系统怎么查找 文件是否存在,在Linux上,如何知道一个可执行文件是否包含调试信息呢?...
请教,在Linux上,如何知道一个可执行文件是否包含调试信息呢?我的意思是是否该文件是使用如gcc -g 这样的参数编译的. 2楼 发表于 2008-12-3 15:44 nm -a binary_f ...
- html5shiv 源码,javascript,_请教一个html5shiv源码插入样式的问题,javascript - phpStudy...
请教一个html5shiv源码插入样式的问题 阅读html5shiv源码的时候,对addStyleSheet函数添加样式的方式有些困惑,特来请教 源码如下: function addStyleShee ...
- linux用户在哪个文件夹,LINUX中用命令成功建立一个用户后信息会记录在哪个文件中...
LINUX中用命令成功建立一个用户后信息会记录在哪个文件中 发布时间:2007-07-28 10:14:57来源:红联作者:MPiops 增加用户帐号后 新建用户的命令十分简单,在命令行下使用 use ...
- Linux下静态编译的一个TIP
Linux下静态编译的一个TIP | 素包子 Linux下静态编译的一个TIP 2010年3月28日 baoz 阅读评论 linux下静态编译好处很多,一来是可以跨发行版(debian redhat ...
- 【LINUX】——linux如何使用Python创建一个web服务
问:linux如何使用Python创建一个web服务? 答:一句话,Python! 一句代码: /usr/local/bin/python -m SimpleHTTPServer 8686 > ...
- 查看依赖树_如何在基于 Ubuntu 或 Debian 的 Linux 发行版中查看一个软件包的依赖...
但如果你想在安装一个软件包之前或之后知晓这个软件包的依赖,那该怎么办呢? 来源:https://linux.cn/article-12987-1.html 作者:Abhishek Prakash 译者 ...
- 编译我的第一个c语言,linux菜鸟学习写第一个C语言代码--“hello Linux!”
2004年4月20日最新版本的GCC编译器3.4.0发布了.目前,GCC可以用来编译C/C++.FORTRAN.JAVA.OBJC.ADA等语言的程序,可根据需要选择安装支持的语言.GCC 3.4.0 ...
- linux下Qt编写串口调试助手,如何在linux下用QT写一个简单的串口调试助手
如何在linux下用QT写一个简单的串口调试助手 QT5串口类 在QT5以前,编写串口一般使用的是qextserialport类,但在QT5之后有了QT自带的串口类SerialPort(串口基础类)和 ...
最新文章
- linux ls 按 文件名 大小 时间 排序
- c语言倒计时不影响进程_2017级C语言大作业 - 见缝插针
- atomic底层实现是基于无锁算法cas
- 存储基础知识一 主要技术DAS、SAN、NAS
- 软件设计模式之适配器模式(JAVA)
- 【Java】列表、集合、哈希表和可变参数
- 单链队列实现及基本操作
- java数据存在ie中_[Java教程]解决在IE中获取数据的缓存问题,运行环境为node.js
- oracle磁盘组实例启动,12c rac 实例无法启动之磁盘组空间耗尽
- 磁盘空间使用关乎SQL Server性能
- Bitbucket 触发内网 Jenkins Build
- 计算机cpu温度显示原理,鲁大师的测温功能是怎么做到的?测温原理介绍
- 万恶的less-loader
- Lamber表达式 List,Map,Set 互相转换
- ArcGIS:如何进行栅格数据的拼接和裁剪、坡度坡向的提取、地形透视图的建立、等高线的提取、剖面图的创建?
- 浅谈我对思维导图的认识
- 【Neuralink 与大脑的神奇未来】Part 2:大脑
- 51单片机模拟PS2协议制作5X5矩阵工业键盘
- 个人作品设计展示官网源码
- unity ugui改变pos,width,height
热门文章
- python的十句名言_经典十句名言
- mysql远程主机强迫关闭了_channal经常关闭
- 修改服务器的返回数据,使用charles 修改服务器返回数据
- 37手游基于云平台的大数据建设实践
- IOS入门之StoryBoard
- 朝花夕拾 - jsliang 大白前端新年庆
- python求周长_计算任何三角形的周长[python 3]
- RVN 一种新的聚类算法
- e4a浏览框本地HTML,E4A浏览器 · E4A易安卓中文开发教程-E4A社区 · 看云
- 有关于昨晚几位 Crypto CEO 国会听证会部分实录总结