- 1、本文档共24页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第九章嵌入式
第9 章 Linux系统编程之文件
9.1 文件的分类
在 LINUX 中,文件被用来实现统一的设备接口。除了把磁盘数据组织成文件系统之外,
LINUX 还把其他外部设备(如 CD-ROM、显示器、键盘、打印机、鼠标和网络接口等)也
映射成为一个文件。这种统一接口的 LINUX 设计哲学,既方便了用户(用户只需像访问磁
盘文件一样去访问各种设备即可),又成就了 LINUX 系统(系统内核简洁、安全、易移植、
易扩展)。
根据文件所映射的具体设备,一般把 LINUX 文件分为三类:普通文件、块文件和字符
文件。普通文件指磁盘上的数据文件;块文件表示特性与磁盘类似的设备,这种设备允许以
块或组块的形式传送信息,并具有从设备的任何地方检索块的能力;字符文件表示特性与终
端类似的设备,这种设备允许以字节为单位传送信息,并且只能顺序操作。另外,在 LINUX
中,目录也以文件的形式存在,称为目录文件。LINUX 还提供了一种链接文件用于文件的
访问。因此,当用 ls –l 命令查看时,文件共有 5 种类型:普通文件(- )、目录文件(d )、
链接文件(l )、字符文件(c )和块文件(b )。
对所有类型的文件,POSIX 主要提供了 5 个系统调用来访问:open、close、read 、write 、
ioctl,这些函数通过调用被称为设备驱动程序的操作系统模块来完成对具体设备的操作。
同样的,ANSI C 的标准库函数中也提供了对文件的访问函数,它们主要包括 fopen、
fclose、fscanf、fprintf、fread、fwrite 等。
从本质上来看,标准库函数是对系统调用的一个包装,在进行 LINUX 系统编程时,既
可以调用标准库函数,也可以调用系统调用,但二者的使用还是有一定区别的。
9.2 用于文件操作的系统调用
9.2.1 打开和关闭文件
open 系统调用将一个整数值与一个文件或物理设备关联起来,这个整数值被称为文件
描述符。如果成功,open 返回一个非负整数来表示打开的文件描述符。如果不成功,open
返回-1 并设置 errno,具体 errno 值请查阅联机帮助手册。
1
文件描述符表示了打开的文件或设备,可以将文件描述符想象成进程文件描述符表的索
引,文件描述符表在进程的用户区,提供了对相关文件或设备的系统信息的访问。每个进程
都自动伴随三个打开的文件,它们的文件描述符分别为 STDIN_FILENO、STDOUT_FILENO
和 STDERR_FILENO,其值分别为 0、1 和 2 ,分别表示标准输入、标准输出和标准错误,
缺省情况下分别代表键盘和显示器。
SYNOPSIS
#include fcntl.h
#include sys/types.h
#include sys/stat.h
int open(const char *path, int oflags);
int open(const char *path, int oflags, mode_t mode); POSIX
参数 path 指向要打开的文件或设备的路径名。
参数 oflag 为打开的文件指定了状态标志符和访问模式,该参数通过访问模式标识符和
附加标志符按位或(| )运算来构建。访问模式标识符的 POSIX 值为 O_RDONLY 、
O_WRONLY 、O_RDWR ,必须指定其中一个来说明只读、只写或读写。附加标志符包括
O_APPEND、O_CREAT、O_EXECL、O_NOCTTY、O_NONBLACK 和 O_TRUNC 。其中
O_APPEND 在写操作之前使文件偏移转移到文件的末端,这样就可以向一个已存在的文件
添加内容了,与之相反 O_TRUNC 将为写操作打开的正常文件的长度删减为 0 。O_NOCTTY
防止一个已打开的设备变成一个终端。O_NONBLOCK 负责控制 open 是立即返回还是一直
阻塞到设备准备好为止。O_CREAT 创建一个新文件(必须向 open 传递第三个参数 mode ),
如果想避免重写一个已存在的文
您可能关注的文档
最近下载
- 汉语拼音教学讲座.pptx
- 2024-2030年中国工业分离筛分设备行业市场发展趋势与前景展望战略研究报告.docx
- 空间句法简明教程-20140903-01.pdf
- (高清版)DB45∕T 1625-2024 地质灾害危险性评估规程.pdf VIP
- 2023年(机械点检员)高级技能及理论综合知识考试题库与答案.pdf VIP
- 金融理财师AFP认证历年考试真题试题库(含答案).docx
- 《设施农业》课程标准.pdf
- 重庆主城排水工程可行性实施报告.pdf
- 2024浙江省温州市中考初三一模科学试题及答案.pdf VIP
- 2023小升初数学真题考点:图形与几何(复习)人教版六年级下册数学.pdf VIP
文档评论(0)