unix i/o

一个Unix i/o文件就是一个m字节的序列。
所有的I/o设备,例 网络 磁盘 终端 都模型化为文件,而所有的输入输出都被当作相应的文件的读和写来执行。这种设备优雅地映射为文件的方式,允许unix内核引出一个简单哪 低级的应用接口,称为unix i/o,这使所有的输入 输出操作都可以按照文件的方式操作。
1 打开文件,应用程序通过要求内核打开相应文件,来访问一个i/o设备,当内核打开一个文件时,内核返回一个小的非负整数,称之为描述符,在后续的程序中标识文件,内核通过标识文件在内核中存储文件详细信息,应用程序只记载文件描述符。
例:unix shell创建的每个进程开始时都有三个打开的文件:标准输入 0 标准输出 1 标准错误 2
2 改变当前的文件位置: 内核保持着一个文件位置k,对于每个打开文件,初始文件 为0,这个文件位置是从文件开头开始的字节偏移量。应用程序能够通过执行seek操作,显式地设置当前位置为k。
3 读写文件:一个读操作就是从文件copy n个字节到存储器,从当前文件位置k开始,然后将读至k+n, 当K+n大于文件大小时,读操作将会触发end of file(EOF)标志,当应用程序检测到此标志时,代表文件已经读到末尾。
4 关闭文件: 当应用程序完成对文件的操作(打开 读 写)后 ,它就通知内核关闭这个文件。内核释放文件打开石创建的数据结构,(释放内核目录proc),比关闭文件描述符,无论进程由于何种原因操作终止时,内核都会关闭进程所打开的所有文件并释放它们的存储器资源。

相关阅读:
linux 文件系统简介
linux c打开文件的方法
linux /proc目录简介
如何通过进程id获取进程名