欢迎来到天天文库
浏览记录
ID:50041912
大小:904.00 KB
页数:57页
时间:2020-03-08
《嵌入式Linux应用开发教程 教学课件 作者 华清远见嵌入式学院 赵苍明 穆煜 第五章 嵌入式文件IO编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、嵌入式应用程序设计第五章嵌入式文件I/O编程5.1Linux系统调用及用户编程接口5.2Linux文件I/O系统概述5.3底层文件I/O操作5.4嵌入式Linux串口应用编程5.5标准I/O编程5.6实验内容5.7小结5.8思考与练习本章课程:25.1Linux系统调用及用户编程接口5.1.1系统调用5.1.2用户编程接口5.1.3系统命令35.1.1系统调用系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用
2、来创建进程、实现进程之间的通信等。在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,逻辑上是相互隔离的。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。但是,在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要
3、从用户空间进入内核空间,处理完后再返回到用户空间。45.1.2用户编程接口在Linux中,用户编程接口(API)遵循了在Unix中最流行的应用编程界面标准——POSIX标准。POSIX标准是由IEEE和ISO/IEC共同开发的标准系统。该标准基于当时现有的Unix实践和经验,描述了操作系统的系统调用编程接口(实际上就是API),用于保证应用程序可以在源代码一级上在多种操作系统上移植运行。这些系统调用编程接口主要是通过C库(libc)实现的。55.1.3系统命令系统命令相对API更高了一层,它实际上一个可执行程序,
4、它的内部引用了用户编程接口(API)来实现相应的功能,它们之间的关系如图:65.2Linux文件I/O系统概述5.2.1虚拟文件系统5.2.2通用文件模型5.2.3Linux中文件及文件描述符75.2.1虚拟文件系统Linux系统成功的关键因素之一就是具有与其他操作系统和谐共存的能力。Linux的文件系统由两层结构构建。第一层是虚拟文件系统(VFS),第二层是各种不同的具体的文件系统。VFS在linux系统中的位置如图:85.2.2通用文件模型通用的文件模型(commonfilemodel),这个模型的核心是4个
5、对象类型,即超级块对象(superblockobject)、索引节点对象(inodeobject)、文件对象(fileobject)和目录项对象(dentryobject)。95.2.3Linux中文件及文件描述符对于Linux而言,所有对设备和文件的操作都是使用文件描述符来进行的。文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程打开文件的记录表。当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,也需要把文件描述符作为参数传递给相应的函数。一个进程启动时,都
6、会打开3个文件:标准输入、标准输出和标准出错处理文件描述符宏标准输入0STDIN_FILENO标准输出1STDOUT_FILENO标准出错2STDERR_FILENO105.3底层文件I/O操作5.3.1基本文件操作5.3.2文件锁5.3.3多路复用115.3.1基本文件操作open函数是用于打开或创建文件,在打开或创建文件时可以指定文件的属性及用户的权限等各种参数。所需头文件:#include#include#include原型:intope
7、n(constchar*pathname,intflags,intperms)125.3.1基本文件操作open函数语法要点135.3.1基本文件操作close()函数是用于关闭一个被打开的文件。close函数语法要点:145.3.1基本文件操作read()函数是用于将从指定的文件描述符中读出的数据放到缓存区中,并返回实际读入的字节数。read函数语法要点:155.3.1基本文件操作write()函数是用于向打开的文件写数据,写操作从文件的当前指针位置开始。write函数语法要点:165.3.1基本文件操作lse
8、ek()函数是用于在指定的文件描述符中将文件指针定位到相应的位置。lseek函数语法要点:175.3.2文件锁文件锁包括建议性锁和强制性锁。建议性锁要求每个上锁文件的进程都要检查是否有锁存在,并且尊重已有的锁。在一般情况下,内核和系统都不使用建议性锁。强制性锁是由内核执行的锁,当一个文件被上锁进行写入操作的时候,内核将阻止其他任何文件对其进行读写操作。采用强制性锁对性能的
此文档下载收益归作者所有