文件描述符,是UNIX系统中,与进程相关的概念。其实是一个非负整数,代表某进程已经打开的文件的索引表。一般由UNIX系统调用返回,或者作为系统调用的参数;
FILE*: FILE指针定义于<stdio.h>之中,适用于标准I/O库调用。FILE结构代表一个文件IO流。说白了,FILE是C标准库定义的一个结构。
应该提倡使用FILE结构,而不是文件描述符。这样提高了移植性。
struct file 是linux内核中的一个结构体。进程通过系统调用进入内核态时,内核代表进程执行,此时内核将使用struct file来管理文件。
此外,LINUX读写文件, 并不是直接读写磁盘文件,而是通过cache和VFS来管理,并由内核线程pdflush实现了 内存与物理介质直接的同步。具体细节不深究了。