在 C 中,当我们打开一个文件时会发生什么?据我所知,当我们打开文件时,文件的内容并没有加载到内存中。它只是设置文件描述符?那么这个文件描述符是什么?如果文件的内容未加载到内存中,那么如何打开文件?
最佳答案
通常,如果您使用 fopen
或(在 POSIX 系统上)open
打开文件,该函数如果成功,将“打开文件”-它只是为您提供一个值(FILE *
或 int
)以供将来调用读取函数时使用。
在后台,操作系统可能读取部分或全部文件,也可能不读取。你必须调用一些函数来请求读取数据,如果在你调用 fread
/fgets
/read< 时它还没有完成
/etc... 然后它会在那个时候。
“文件描述符”通常是指 POSIX 系统中 open
返回的整数。它用于标识打开的文件。如果您得到一个值 3
,操作系统会在某处跟踪 3
指的是 /home/user/dir/file.txt
, 管他呢。这是一个简短的小值,用于指示操作系统要从哪个文件中读取。当您调用 open
并打开 foo.txt
时,操作系统会说,“好的,打开文件,从这里开始调用它 3
".
关于c - 什么是在 C 中打开文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4537022/