为了对常规文件执行I / O,我们必须首先获取文件描述符使用 open()。然后使用 read() 和 write() 执行 I/O。执行完所有操作后I/O,我们应该使用 close() 释放文件描述符及其相关资源。这些系统调用可用于对所有类型的文件执行 I/O。 所有文件类型和设备驱动程序实现相同的 I/O 接口的事实允许I / O的通用性,这意味着程序通常可以与任何类型的文件,不需要特定于文件类型的代码。 对于每个打开的文件,内核维护一个文件偏移量,该偏移量确定下一次读取或写入发生的位置。文件偏移量是隐式的通过读取和写入更新。使用 lseek(),我们可以显式地重新定位文件偏移量到文件内的任何位置或文件末尾。在某个位置写入数据超出文件的上一端会在文件中创建一个孔。从文件孔读取返回包含零的字节。 ioctl() 系统调用是不适合的设备和文件操作的统称到标准文件 I/O 模型中。