在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函数。