在搭建起嵌入式开发环境之后,从本章开始,将真正开始学习嵌入式Linux的应用开发。由于嵌入式Linux是经Linux裁减而来的,它的系统调用及用户编程接口API与Linux基本是一致的,因此,在以后的章节中,将首先介绍Linux中相关内容的基本编程开发,主要讲解与嵌入式Linux中一致的部分,然后再将程序移植到嵌入式的开发板上运行。因此,没有开发板也可以先在Linux上开发相关应用程序,这对以后进入嵌入式Linux的实际开发是十分有帮助的。第7章嵌入式Linux下的文件操作本章教学目的及要求掌握Linux中系统调用的基本概念掌握Linux中用户编程接口(API)及系统命令的相互关系掌握文件描述符的概念掌握Linux下文件相关的不带缓存I/O函数的使用掌握Linux下设备文件读写方法掌握Linux中对串口的操作熟悉Linux中标准文件I/O函数的使用7.1Linux系统调用及用户编程接口(API)7.1.1系统调用7.1.2用户编程接口(API)7.1.3系统命令7.1Linux系统调用及用户编程接口(API)7.1.1系统调用7.1.2用户编程接口(API)7.1.3系统命令7.1.1系统调用所谓系统调用是指操作系统提供给用户程序调用的一组“特殊”接口,用户程序可以通过这组“特殊”接口来获得操作系统内核提供的服务。例如用户可以通过进程控制相关的系统调用来创建进程、实现进程调度、进程管理等。问题:为什么用户程序不能直接访问系统内核提供的服务呢?这是由于在Linux中,为了更好地保护内核空间,将程序的运行空间分为内核空间和用户空间(也就是常称的内核态和用户态),它们分别运行在不同的级别上,在逻辑上是相互隔离的。程序代码使用不同的地址空间。因此,用户进程在通常情况下不允许访问内核数据,也无法使用内核函数,它们只能在用户空间操作用户数据,调用用户空间的函数。用户程序需要系统提供的服务怎么办?在有些情况下,用户空间的进程需要获得一定的系统服务(调用内核空间程序),这时操作系统就必须利用系统提供给用户的“特殊接口”——系统调用规定用户进程进入内核空间的具体位置。进行系统调用时,程序运行空间需要从用户空间进入内核空间,处理完后再返回到用户空间。系统调用总结Linux系统调用部分是非常精简的系统调用(只有250个左右),它继承了UNIX系统调用中最基本和最有用的部分。这些系统调用按照功能逻辑大致可分为进程控制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket控制、用户管理等几类。7.1Linu...