- 1、本文档共60页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第6章、文件IO编程汇
嵌入式学院—华清远见旗下品牌: HYPERLINK
嵌入式学院—华清远见旗下品牌: HYPERLINK
《嵌入式 Linux 应用程序开发标准教程》——第 6 章、文件 I/O 编程
第 6 章 文件 I/O 编程
本章目标
在搭建起嵌入式开发环境之后,从本章开始,读者将真正
开始学习嵌入式 Linux 的应用开发。由于嵌入式 Linux 是经 Linux 裁减而来的,它的系统调用及用户编程接口 API 与 Linux 基本是一致的,因此,在以后的章节中,笔者将首先介绍 Linux 中相关内容的基本编程开发,主要讲解与嵌入式 Linux 中一致 的部分,然后再将程序移植到嵌入式的开发板上运行。因此, 没有开发板的读者也可以先在 Linux 上开发相关应用程序,这 对以后进入嵌入式 Linux 的实际开发是十分有帮助的。本章主 要讲解文件 I/O 相关开发,经过本章的学习,读者将会掌握以 下内容。
掌握 Linux 中系统调用的基本概念 掌握 Linux 中用户编程接口(API)及系统命令的相互关系 掌握文件描述符的概念
掌握 Linux 下文件相关的不带缓存 I/O 函数的使用 掌握 Linux 下设备文件读写方法 掌握 Linux 中对串口的操作
熟悉 Linux 中标准文件 I/O 函数的使用
《嵌入式 Linux 应用程序开发标准教程》——第 6 章、文件 I/O 编程
6.1 Linux 系统调用及用户编程接口(API)
由于本章是讲解 Linux 编程开发的第 1 章,因此希望读者更加明确 Linux 系统调用和 用户编程接口(API)的概念。在了解了这些之后,会对 Linux 以及 Linux 的应用编程有更 深入的理解。
6.1.1 系统调用
所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序 可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程 控制相关的系统调用来创建进程、实现进程调度、进程管理等。
在这里,为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在 Linux 中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也 就是常称的内核态和用户态),它们分别运行在不同??级别上,在逻辑上是相互隔离 的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们 只能在用户空间操作用户数据,调用用户空间的函数。
但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程 序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户 进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内 核空间,处理完后再返回用户空间。
Linux 系统调用部分是非常精简的系统调用(只有 250 个左右),它继承了 UNIX 系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑大致可分为进程控 制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket 控制、用 户管理等几类。
6.1.2 用户编程接口(API)
前面讲到的系统调用并不是直接与程序员进行交互的,它仅仅是一个通过软中断机 制向内核提交请求,以获取内核服务的接口。在实际使用中程序员调用的通常是用户编 程接口——API,也就是本书后面要讲到的 API 函数。但并不是所有的函数都一一对应一 个系统调用,有时,一个 API 函数会需要几个系统调用来共同完成函数的功能,甚至还 有一些 API 函数不需要调用相应的系统调用(因此它所完成的不是内核提供的服务)。
在 Linux 中,用户编程接口(API)遵循了在 UNIX 中最流行的应用编程界面标 准——POSIX 标准。POSIX 标准是由 IEEE 和 ISO/IEC 共同开发的标准系统。该标准 基于当时现有的 UNIX 实践和经验,描述了操作系统的系统调用编程接口(实际上就 是 API),用于保证应用程序可以在源代码一级上在多种操作系统上移植运行。这些 系统调用编程接口主要是通过 C 库(libc)实现的。
6.1.3 系统命令
《嵌入式 Linux 应用程序开发标准教程》——第 6 章、文件 I/O 编程
以上讲解了系统调用、用户编程接口(API)的概念,分析了它们之间的相互关 系,那么,读者在第 2 章中学到的那么多的 Shell 系统命令与它们之 间又是怎样的关系呢?
系统命令相对 API 更高了一层,它实际上是一个可执行程序, 它的内部引用了用户编程接口(API)来实现相应的功能。它们之间
的关系如图 6.1 所示。
6.2 Linux 中文件及文件描述符概述
图 6.1 系统调用、A
系统命令之间的
文档评论(0)