Linux中的文件描述符(file descriptor)

linux为了实现一切皆文件的设计哲学,不仅将数据抽象成了文件,也将一切操作和资源抽象成了文件,比如说硬件设备,socket,磁盘,进程,线程等。
这样的设计将系统的所有动作都统一起来,实现了对系统的原子化操作,大大降低了维护和操作的难度,想想看,对于socket,硬件设备,我们只要读读写写文件就能对其进行操作是多么爽的一件事。
 

文件描述符:

在linux系统中打开文件就会获得文件描述符,它是个很小的非负整数。每个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每个表项都有一个指向已打开文件的指针。文件指针:C语言中使用文件指针做为I/O的句柄。文件指针指向进程用户区中的一个被称为FILE结构的数据结构。FILE结构包括一个缓冲区和一个文件描述符。而文件描述符是文件描述符表的一个索引,因此从某种意义上说文件指针就是句柄的句柄(在Windows系统上,文件描述符被称作文件句柄)。
 
 
 
file.png
 
在进程控制块PCB里面有个文件描述符表  我们知道 FILE 文件指针它封装了一个文件描述符 那么这个文件描述符它就在内核的进程控制块中
 
PCB结构体
每个进程都有一个文件描述符表 最多放1024个文件描述符 前3个 012被标准输入输出占用
 
文件描述符作用 
通过它找到文件磁盘文件
 
 
2.webp.jpg
 
 
pcb.png
 
本博客所有文章如无特别注明均为原创。作者:odaycaogen复制或转载请以超链接形式注明转自 123``blog
原文地址《Linux中的文件描述符(file descriptor)

相关推荐

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)