当前位置:嗨网首页>书籍在线阅读

13-总结

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

4.9 总结

为了对普通文件执行I/O操作,首先必须调用open()以获得一个文件描述符。随之使用read()和write()执行文件的I/O操作,然后应使用close()释放文件描述符及相关资源。这些系统调用可对所有类型的文件执行I/O操作。

所有类型的文件和设备驱动都实现了相同的I/O接口,这保证了I/O操作的通用性,同时也意味着在无需针对特定文件类型编写代码的情况下,程序通常就能操作所有类型的文件。

对于已打开的每个文件,内核都维护有一个文件偏移量,这决定了下一次读或写操作的起始位置。读和写操作会隐式修改文件偏移量。使用lseek()函数可以显式地将文件偏移量置为文件中或文件结尾后的任一位置。在文件原结尾处之后的某一位置写入数据将导致文件空洞。从文件空洞处读取文件将返回全0字节。

对于未纳入标准I/O模型的所有设备和文件操作而言,ioctl()系统调用是个“百宝箱”。