open是UNIX系统调用函数(包括LINUX等),返回的是文件描述符(File Descriptor),它是文件在文件描述符表里的索引。
fopen是ANSIC标准中的C语言库函数,在不同的系统中应该调用不同的内核api。返回的是一个指向文件结构的指针。
1.fb文件描述符
注:这些我们都在上次博客中写到过,有兴趣的朋友可以去看看。
在Linux系统中一切皆文件,文件又可分为:普通文件、目录文件、链接文件和设备文件。文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(默认最大1024),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序刚刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符会是3。
文件描述符的操作(如: open(),creat(),close(),read()))返回的是一个文件描述符,它是int类型的整数,即fd,其本质是文件描述符表中的下标,它起到一个索引的作用,进程通过PCB中的文件描述符表找到该fd所指向的文件指针filp。每个进程在PCB(Process Control Block)即进程控制块中都保存着一份文件描述符表,文件描述符就是这个表的索引,文件描述表中每个表项都有一个指向已打开文件的指针; 已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体。每打开一个文件,fd默认从最小的未被使用的下标开始分配。
查看默认文件描述符的大小:
2.FILE:
FILE:我们称之为文