- 1、本文档共47页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
21.Linux系统调用机制-Dr.KeShi.doc
2014/2 new第1章 Linux下C编程的相关知识 1
1.1. Linux下的C编程 1
1. 源程序的编译 1
2. 头文件和系统求助 2
1.2. 文件拷贝实例 2
1.3. 并发进程显示实例 6
1. 实现原理 7
2. 注意要点 7
3. 特别强调: 7
第2章 系统调用相关知识 9
2.1. Linux系统调用机制 9
1. 内核中系统调用的过程 9
2. 用户程序中系统调用的过程 16
2.2. 添加新的系统调用(2.6.18内核) 19
1. 步骤1:准备 19
2. 步骤2:下载源代码 19
3. 步骤3:修改相应内核文件 19
4. 步骤4:开始对新的内核进行编译 21
2.3. 对新加的系统调用进行测试 23
1. 旧版本的测试方法 23
2. 新版本的测试方法 23
2.4. 添加新的系统调用(3.2.4内核) 24
1. 步骤1:准备 24
2. 步骤2:修改相应内核文件 24
2. 步骤4:开始对新的内核进行编译 26
2.5. 对新加的系统调用进行测试(3.2.4内核) 27
1. 测试方法 27
第3章 设备驱动相关知识 28
3.1. 基础知识 28
3.2. 添加新模块的基本步骤 29
1. 写设备驱动源代码: 29
2. 编译 31
3. 挂载内核中模块 32
4. 创建新的虚拟设备文件 33
5. 测试新的设备驱动 33
6. 卸载操作 33
第4章 /proc文件相关知识 34
4.1. 实现原理 34
4.2. 实现方法 34
Linux下C编程的相关知识
Linux下的C编程
源程序的编译
在Linux下面,如果要编译一个C语言源程序,我们要使用GNU的gcc编译器. 下面我们以一个实例来说明如何使用gcc编译器.
假设我们有下面一个非常简单的源程序(hello.c):
int main(int argc,char **argv)
{
printf(Hello Linux\n);
}
要编译这个程序,我们只要在命令行下执行:
gcc -o hello hello.c
gcc 编译器就会为我们生成一个名为hello的可执行文件.在当前目录下执行./hello就可以看到程序的输出结果了.命令行中 gcc表示我们是用gcc来编译我们的源程序,-o 选项表示我们要求编译器给我们输出的可执行文件名为hello 而hello.c是我们的源程序文件.
gcc编译器有许多选项,一般来说我们只要知道其中的几个就够了. -o选项我们已经知道了,表示我们要求输出的可执行文件名. -c选项表示我们只要求编译器输出目标代码,而不必要输出可执行文件. -g选项表示我们要求编译器在编译的时候提供我们以后对程序 进行调试的信息. 知道了这三个选项,我们就可以编译我们自己所写的简单的源程序了,如果你想要知道更多的选项,可以查看gcc的帮助文档(可以用man gcc来查看),那里有着许多对其它选项的详细说明.
头文件和系统求助
有时候我们只知道一个函数的大概形式,不记得确切的表达式,或者是不记得该函数在哪个头文件进行了说明。这个时候我们可以求助系统。比如说我们想知道fread这个函数的确切形式,我们只要执行 man fread系统就会输出函数的详细解释和这个函数所在的头文件stdio.h说明. 如果我们要write这个函数的说明我们执行man write时输出的结果却不是我们所需要的。因为我们要的是write这个函数的说明,可是出来的却是write这个命令的说明。为了得到write的函数说明我们要用 man 2 write。 2表示我们用的write这个函数是系统调用函数,还有一个我们常用的是3表示函数是C的库函数。记住不管什么时候, man都是我们的最好助手。
文件拷贝实例
本节主要针对一个实例:编一个C程序,其内容为实现文件拷贝的功能。
主要用到如下几个函数:
open:打开文件
close:关闭文件
read:读操作
write:写操作
当我们需要打开一个文件进行读写操作的时候,我们可以使用系统调用函数open.使用完成以后我们调用另外一个close函数进行关闭操作.
#include fcntl.h //注意:这个字母是小写的L,而不是数字1。
#include unistd.h
#include sys/types.h
#include sys/stat.h
int open(const char *pathname,int flags);
int open(const char *pathname,int flags,mode_t mode);
int close(int fd);
open函数有两个形式.其中pathname是我们要
您可能关注的文档
- 2010~2011学年第1学期理工学院建筑学专业-暨南大学力学与建筑.doc
- 2011-2012学年春季学期基础课课表.PDF
- 2011年上半年自考简章.doc
- 2011年全国二手车行业分析报告-商务部.doc
- 2011年湖南大学函授专业-湖南城市学院成人高考.doc
- 2011年纳米表征、结构和光电测量技术培训周(第二轮通知).PDF
- 2011级《编译原理》期末考试试题(A卷).PDF
- 2012年回顾与财务报表摘要-TescoPLC.PDF
- 2012年直博士生培养计划(信息学院,计算机软件与理论).doc
- 2012级计算机人才培养计划-数信学院.doc
- 新高考生物二轮复习讲练测第6讲 遗传的分子基础(检测) (原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第3讲 酶和ATP(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第9讲 神经调节与体液调节(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第8讲 生物的变异、育种与进化(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第5讲 细胞的分裂、分化、衰老和死亡(检测)(原卷版).docx
- 新高考生物二轮复习讲练测第12讲 生物与环境(讲练)(原卷版).docx
- 新高考生物二轮复习讲练测第11讲 植物生命活动的调节(检测)(原卷版).docx
文档评论(0)