Linux文件


--------------------------------------------------------------------------------------------------------------------------------------------------------
要去访问磁盘的文件,必须通过系统调用来返回一个与该文件相关联的ID,
这个ID就是文件描述符file descriptor

linux操作系统提供了一个open系统调用,任何进程要去访问一个文件,首先使用这个open打开这个
文件,系统将返回一个编号,及与这个文件相关联的文件描述符
(1)用户程序从用户从用户空间向内核提交了打开申请
(2)操作系统会在内核中去检查请求是否合法,如果合法在内核中申请打开文件相关联信息(读写位置,在磁盘中的位置,全用struct file来存储)并且添加到当前进程的PCB打开文件列表数组中,对应的这个数组小标及文件描述符
(3)将文件描述符返回非用空间,用户空间接下来对这个文件进行读写就是通过这个编号值

---------------------------------------------------------------------------------------------------------------------------------------------------------

系统默认为每个进程打开了三个文件:

printf/scanf:
文件描述符值0(标准输入,键盘)
1(标准输出,显示器)
2(标准错误输出,显示器)
相应的宏
STDIN_FILENO
STDOUT_FILENO
STDERR_FILENO

相关内容