在Linux系统中,文件是一个多字节的序列。
打开文件即内核会访问一个描述符,用来在后续操作中标识这个文件。内核记录这个文件的所有信息,而应用程序只需要记住这个标识符。
读文件则是从文件中复制n个字节到内存中,而写操作就是从内存中复制n个字节到文件。
关闭文件则会将描述符恢复到可用的描述符池中。
文件常见的类型有普通文件(文本文件和二进制文件),目录,套接字等。
父子进程共享相同的打开文件表集合,因此共享相同的文件位置.一个很重要的结果就是.在删除相应文件表表项之前,父子进程必须都关闭了它们的描述符.
谈到文件就必然谈到输入和输出函数
I/O函数有三种,分别为标准I/O函数,RIO函数,Unix I/O函数。
Unix I/O函数是在操作系统内核中实现的。
RIO函数和标准I/O函数都是基于Unix I/O函数实现的。
那什么情况下使用这三种函数呢?
对于大多数程序,标准I/O函数更简单,是优于Unix I/O的选择,然而,因为标准I/O和网络文件的一些互相不兼容的限制,Unix I/O比之标准I/O更适用于网络应用程序。
对于网络套接字的I/O适用RIO函数。