文件描述符
每个进程都有一个指针*file,指向表file_struct,该表中最重要的部分是fd_array[]的一个指针数组,每个元素都是一个指向打开文件的指针。文件描述符就是该数组的下标。系统对每一个进程都默认打开三个文件:stdin(标准输入)、stdout(标准输出)、stderr(标准错误)。对应的文件描述符分别是0、1、2。在Linux下,对设备和文件的操作都使用文件描述符来进行的。
文件描述符的分配规则:
文件描述符分配按最小原则,即在file_struct数组中找到没被使用的最小的一个下标,作文新的文件描述符。
既然文件描述符按最小原则分配,那如果关闭标准输入,打开新文件file,file就会分配到0文件描述符。可以实现把文件中的数据输出到显示器上。代码如下:
1 #include<stdio.h>
2 #include<sys/stat.h>
3 #include<sys/types.h>
4 #include<fcntl.h>
5