嵌入式Linux应用程序开发标准教程
1、一、linux系统调用及API 1. 系统调用 linux分为内核空间和用户空间,用户空间无法直接访问内核空间。内核通过系统调用为用户提供服务,很精简,大约250个左右。大致可分为:进程控制、进程间通信、文件系统控制、系统控制、存储管理、网络管理、socket控制、用户管理等几类。 2. C库API C库提供若干API,遵循一定的标准,供用户使用。 用户可以直接调用系统调用,也可以调用C库提供的API。

3、三、底层文件IO操作 3.1 基本文件操作 3.1.1 函数说明 5个基本函数,不带缓冲,不属于ANSI C,属于POSIX标准。 open、read、write、lseek、close, 见APUE相关笔记。

5、【注意】: !记录锁继承性等问题进程、文件关闭与锁的关系由于锁是在进程信息里存放的,故关闭进程或者关闭文件,该文件的锁有自动关闭。由fork产生的子进程不继承父进程的锁。执行exec后,新进程可以继承原来的锁。默认继承 死锁举例 如图,进程1锁文件1,进程2锁文件2。若进程1想锁文件2,且选择了阻塞方式,则进程1会处于阻塞状态,同理进程2也是。这样就构成了死锁。 使用方法: 使用F_GETLK后再F_SETLK,不是原子操作,可能会出问题。可以直接用F_SETLK,然后判断返回值。
