(学习unix编程)关于文件流与文件描述符的区别
2014-10-05 20:14
363 查看
文件描述符(就是整数)用于在一个进程内唯一的标识打开的文件。这假定了内核能够在用户进程的描述符和内核内部使用的机构之间,建立一种关联。(深入linux内核架构)
由于唯一标识进程的结构就是PCB(文件控制块),那么文件描述符肯定在进程控制块当中。这个进程控制块在linux系统中叫做task_struct。
那么fd_array的下标就被称为文件描述符。
文件流(iostream)被实现为指向结构FILE的指针(linux程序设计),属于标准I/O库。
文件流的优势是提供了缓冲,减少了使用read和write系统调用的次数,这样可以减少用户态与核心态切换的开销。
所以我认为,流就是对文件描述符和缓冲的一个封装。
由于唯一标识进程的结构就是PCB(文件控制块),那么文件描述符肯定在进程控制块当中。这个进程控制块在linux系统中叫做task_struct。
struct task_struct { ... struct files_struct *files; //打开文件信息 ... }task_struct 中的 files_struct 就是进程开打文件的信息
files_struct { ... struct file *fd_array[NR_OPEN_DEFAULT];// NR_OPEN_DEFAULT是内核允许每个进程打开的文件数。 ... }其中fd_array每个数组项指向一个file结构的实例,管理一个打开文件的打开信息。
那么fd_array的下标就被称为文件描述符。
文件流(iostream)被实现为指向结构FILE的指针(linux程序设计),属于标准I/O库。
文件流的优势是提供了缓冲,减少了使用read和write系统调用的次数,这样可以减少用户态与核心态切换的开销。
所以我认为,流就是对文件描述符和缓冲的一个封装。
相关文章推荐
- 我的UNIX编程学习笔记——文件描述符与open函数
- linux/unix编程学习途径 关于个人技术发展的一些考量
- 09.12.13 linux/unix编程学习途径 关于个人技术发展的一些考量
- UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
- 并发编程学习笔记 三------- 关于在if中和while中使用wait(),唤醒之后的区别
- UNIX环境编程学习笔记(4)——文件I/O之dup复制文件描述符
- Unix环境编程学习笔记------在进程间传送文件描述符
- 关于学习ASP和编程的28个观点
- C语言学习零碎整理(5):关于char指针p和char s[]的区别
- LINUX开发学习日记(第一部)(UNIX环境高级编程)
- 关于编程的学习之路
- 关于学习ASP和编程的28个观点
- Unix C编程学习日记之一---Tuxedo学习
- socket编程学习笔记, Unix Socket和Windows Socket
- ...继续学习Unix编程...
- 关于学习操作系统编程的一些建议
- 关于学习ASP和编程的28个观点
- Kingofark关于学习C++和编程的50个观点2003修订版
- kingofark关于学习C++和编程的另外35个观点
- kingofark关于学习C++和编程的50个观点