什么是在C中打开文件?

Mis*_*thi 6 c file

在C中,当我们打开文件时会发生什么?据我所知,当我们打开文件时,文件的内容没有加载到内存中.它只是设置文件描述符?那么这个文件描述符是什么呢?如果文件的内容没有加载到内存中那么文件是如何打开的?

Tha*_*tos 6

通常情况下,如果您使用fopen或(在POSIX系统上)open打开文件,该函数(如果成功)将"打开文件" - 它只会为您提供一个值(a FILE *或an int),以便在将来调用read时使用功能.

在引擎盖下,操作系统可能会读取部分或全部文件,但可能不会.您必须调用某个函数来请求数据被读取,如果它在您调用fread/ fgets/ read/ etc 时没有完成它,那么它将在那时.

"文件描述符"通常是指openPOSIX系统返回的整数.它用于标识打开的文件.如果你得到一个值3,某处,操作系统是跟踪这3指的是/home/user/dir/file.txt,或什么的.这是一个简短的小值,以指示操作系统,其从读取文件.当你打电话open,打开说,foo.txt操作系统说,"好吧,打开文件,3从这里打电话".


ddy*_*yer 2

C 没有文件 I/O 的原语,这完全取决于您使用的操作系统和库。

  • `fopen` 是 C 语言的文件 I/O 原语,与操作系统无关。(尽管您经常可以调用操作系统特定的函数来进行更多控制。) (2认同)