1、文件描述符(fd)
咱们都知道在Linux下一切皆文件。固然设备也不例外,若是要对某个设备进行操做,就不得不打开此设备文件,打开文件就会得到该文件的文件描述符fd( file discriptor), 它就是一个很小的整数,每一个进程在PCB(Process Control Block)中保存着一份文件描述符表,文件描述符就是这个表的索引,每一个表项都有一个指向已打开文件的指针。
图中文件描述符即为文件描述符数组的下标
文件描述符的分配规律:从当前未使用的最小的整数开始分配;
文件描述符的缺点:
不能移植到UNIX之外的系统上去,也不直观。数组
举一个系统函数的例子:ssize_t write ( int fd, const void *buf, size_t count);
write: 是系统写函数 fd: 文件描述符 (一个整数) *buf: 内容写在哪里 count: 一次写多少个;缓存
归纳:
每个进程在PCB(Process Control Block)即进程控制块中都保存着一分文件描述符表,文件描述符就是这个表的索引,文件描述符表中每一个表项都有一个指向已打开文件的指针。如今咱们明确一下:已打开的文件在内核中用file结构体表示,文件描述符表中的指针指向file结构体。函数
fd详解
fd:为打开文件的文件描述符,