"APUE(UNIX环境高级编程)——文件I/O篇主要讲解了UNIX系统中的文件输入/输出操作,包括基本的I/O函数如open、read、write、lseek和close,以及不带缓存的I/O概念。此外,还涉及到文件描述符、原子操作、多进程间的文件共享、内核数据结构以及dup、fcntl和ioctl等函数的应用。" 在UNIX环境中,文件I/O是操作系统提供给程序员进行数据读写的接口。这一章首先介绍了五个核心的文件I/O函数: 1. **open**: 用于打开已存在文件或创建新文件,返回一个文件描述符。 2. **read**: 使用文件描述符从文件中读取数据,其效率受缓存器长度影响。 3. **write**: 向文件写入数据,同样受缓存器长度影响。 4. **lseek**: 改变文件指针的位置,以便读写不同位置的数据。 5. **close**: 关闭已打开的文件,释放相关资源。 不带缓存的I/O(unbuffered I/O)意味着每次read和write调用都会直接与内核交互,没有中间的缓冲层。这与标准I/O库中的缓冲机制形成对比,标准I/O库通常会提供自己的缓冲机制以提高性能。 文件描述符是内核追踪打开文件的关键数据结构,它是一个非负整数。0、1和2分别代表标准输入、标准输出和标准错误,这是UNIX系统中的传统约定,也是POSIX应用程序通常遵循的规则。在POSIX标准中,这些数值被符号常数STDIN_FILENO、STDOUT_FILENO和STDERR_FILENO所替代。 文件描述符的范围是0到OPEN_MAX,这个上限值在不同的UNIX版本中可能有所不同,早期的系统通常限制为19,允许每个进程打开20个文件。但现代系统通常能支持更多的同时打开文件。 除了基本的I/O操作,本章还涵盖了原子操作的重要性,特别是在多进程环境下,确保操作不会被其他进程干扰。原子操作保证了文件状态的一致性,例如,当两个进程同时尝试修改同一文件时,内核会确保这些操作不会交错。 另外,文件的共享特性也得到讨论,包括如何通过文件描述符在进程间共享文件,以及内核如何维护关于这些文件的相关数据结构。最后,提到了dup函数用于复制文件描述符,fcntl用于文件控制,以及ioctl用于设备控制,这些都是扩展文件I/O功能的重要工具。 APUE的这一章节深入探讨了UNIX系统中文件I/O的各个方面,为开发者提供了理解并有效利用这些功能的基础。
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://profile-avatar.csdnimg.cn/17970481a88a4e68b94ab7a4feaada1a_hostfj.jpg!1)
- 粉丝: 19
- 资源: 7
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![](https://csdnimg.cn/release/wenkucmsfe/public/img/voice.245cc511.png)
最新资源
- 构建Cadence PSpice仿真模型库教程
- VMware 10.0安装指南:步骤详解与网络、文件共享解决方案
- 中国互联网20周年必读:影响行业的100本经典书籍
- SQL Server 2000 Analysis Services的经典MDX查询示例
- VC6.0 MFC操作Excel教程:亲测Win7下的应用与保存技巧
- 使用Python NetworkX处理网络图
- 科技驱动:计算机控制技术的革新与应用
- MF-1型机器人硬件与robobasic编程详解
- ADC性能指标解析:超越位数、SNR和谐波
- 通用示波器改造为逻辑分析仪:0-1字符显示与电路设计
- C++实现TCP控制台客户端
- SOA架构下ESB在卷烟厂的信息整合与决策支持
- 三维人脸识别:技术进展与应用解析
- 单张人脸图像的眼镜边框自动去除方法
- C语言绘制图形:余弦曲线与正弦函数示例
- Matlab 文件操作入门:fopen、fclose、fprintf、fscanf 等函数使用详解
![](https://img-home.csdnimg.cn/images/20220527035711.png)
![](https://img-home.csdnimg.cn/images/20220527035111.png)
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)