- 1、本文档共57页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
嵌入式应用程序设计第五章 嵌入式文件I/O编程 5.1 Linux系统调用及用户编程接口 5.2 Linux文件I/O系统概述 5.3 底层文件I/O操作 5.4 嵌入式Linux串口应用编程 5.5 标准I/O编程 5.6 实验内容 5.7 小结 5.8 思考与练习 5.1 Linux系统调用及用户编程接口 5.1.1 系统调用 5.1.2 用户编程接口 5.1.3 系统命令 5.1.1 系统调用 系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程之间的通信等。 在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,逻辑上是相互隔离的。 因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。 但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完后再返回到用户空间。 5.1.2 用户编程接口 在Linux中,用户编程接口(API)遵循了在Unix中最流行的应用编程界面标准——POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的Unix实践和经验,描述了操作系统的系统调用编程接口(实际上就是API),用于保证应用程序可以在源代码一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(libc)实现的。 5.1.3 系统命令 系统命令相对API更高了一层,它实际上一个可执行程序,它的内部引用了用户编程接口(API)来实现相应的功能 ,它们之间的关系如图: 5.2 Linux文件I/O系统概述 5.2.1 虚拟文件系统 5.2.2 通用文件模型 5.2.3 Linux中文件及文件描述符 5.2.1 虚拟文件系统 Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建。第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。 VFS在linux系统中的位置如图: 5.2.2 通用文件模型 通用的文件模型(common file model),这个模型的核心是4个对象类型,即超级块对象(superblock object)、索引节点对象(inode object)、文件对象(file object)和目录项对象(dentry object)。 5.2.3 Linux中文件及文件描述符 对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。 一个进程启动时,都会打开3个文件:标准输入、标准输出和标准出错处理 5.3 底层文件I/O操作 5.3.1 基本文件操作 5.3.2 文件锁 5.3.3 多路复用 5.3.1 基本文件操作 open函数是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。 所需头文件: #include sys/types.h #include sys/stat.h#include fcntl.h 原型: int open(const char *pathname, int flags, int perms) 5.3.1 基本文件操作 open函数语法要点 5.3.1 基本文件操作 close()函数是用于关闭一个被打开的文件。 close函数语法要点: 5.3.1 基本文件操作 read()函数是用于将从指定的文件描述符中读出的数据放到缓存区中,并返回实际读入的字节数 。 read函数语法要点: 5.3.1 基本文件操作 write()函数是用于向打开的文件写数据,写操作从文件的当前指针位置开始。 write函数语法要点: 5.3.1 基本文件操作 lseek()函数是用于在指定的文件描述符中将文件指针定位到相应的位置。 lseek函数语法要点: 5.3.2 文件锁 文件锁包括建议性锁和强制性锁。建议性锁要求每个上
您可能关注的文档
- 汽油发动机微机控制系统检修 任务单 3.1有分电器点火系统任务单.doc
- 汽油发动机微机控制系统检修 任务单 3.2同时点火系统任务单.doc
- 汽油发动机微机控制系统检修 任务单 3.3单独点火系统任务单.doc
- 汽油发动机微机控制系统检修 任务单 4.1任务单.doc
- 嵌入式系统设计与开发 教学课件 作者 马文华 主编 邓耀华 汤秀春 胡伟 副主编 10ARM9 处理器.ppt
- 钳工技术 5 10章 第5章.PPT
- 钳工技术 5 10章 第6章.PPT
- 钳工技术 5 10章 第7章.PPT
- 钳工技术 5 10章 第8章.PPT
- 钳工技术 5 10章 第9章.PPT
- 10《那一年,面包飘香》教案.docx
- 13 花钟 教学设计-2023-2024学年三年级下册语文统编版.docx
- 2024-2025学年中职学校心理健康教育与霸凌预防的设计.docx
- 2024-2025学年中职生反思与行动的反霸凌教学设计.docx
- 2023-2024学年人教版小学数学一年级上册5.docx
- 4.1.1 线段、射线、直线 教学设计 2024-2025学年北师大版七年级数学上册.docx
- 川教版(2024)三年级上册 2.2在线导航选路线 教案.docx
- Unit 8 Dolls (教学设计)-2024-2025学年译林版(三起)英语四年级上册.docx
- 高一上学期体育与健康人教版 “贪吃蛇”耐久跑 教案.docx
- 第1课时 亿以内数的认识(教学设计)-2024-2025学年四年级上册数学人教版.docx
文档评论(0)