21Linux系统调用机制-DrKeShi.DOC

  1. 1、本文档共47页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
21Linux系统调用机制-DrKeShi

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是我们要

文档评论(0)

2105194781 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档