溧阳网站建设公司,网站备案取消流程,网站建设开发技术类型,北京市中海建设有限公司网站ps:文件描述符表#xff0c;与文件指针 有什么联系#xff1f;#xff1f;#xff1f; 1. linux 系统#xff0c;一般一个进程 允许打开的最大文件数量是 1024#xff0c; 对应内核区的进程控制块#xff08;pcb#xff09;中的文件描述符表的范围#xff0c; 在shell…ps:文件描述符表与文件指针 有什么联系 1. linux 系统一般一个进程 允许打开的最大文件数量是 1024 对应内核区的进程控制块pcb中的文件描述符表的范围 在shell输入 ulimit -a 就可以查看 open files 为1024。 在Linux系统中一切皆文件。如果要对某个设备进行操作打开此设备文件只要你打开文件就会获得该文件的文件描述符fd(file discriptor)这个文件描述符就是一个整数。 文件描述符就是这个文件描述符表的索引文件描述符从0开始到1023 2. 文件描述符的分配规律从当前未使用的最小的整数处开始分配 。比如说如果你打开一个文件系统会自动为它打开三个文件分别是stdinstdout,stderr就是标准输入标准输出标准输出。他们的文件描述符分别是 012也就是说当你的文件打开时它的文件描述符就从3开始分配了如果你把那三个文件关闭一个例如关掉标准输入则打开的文件的文件描述符将会填上0让后再往后分配。 3. 每个进程在PCBProcess Control Block即进程控制块中都保存着一份文件描述符表文件描述符就是这个表的索引文件描述表中每个表项都有一个指向已打开文件的指针。已打开的文件在内核中用file结构体表示文件描述符表中的指针指向file结构体。 fd为打开文件的文件描述符而每个进程都有一张文件描述表fd文件描述符就是这张表的索引同样这张表中有一表项该表项又是指向前面提到打开文件的file结构体file结构体才是内核中用于描述文件属性的结构体
这段代码能输出一个进程能打开多少文件
int main() {int num 0;int fd;while(1) {fd open(1.txt, O_RDONLY|O_CREAT|O_TRUNC, 0777);if(fd0) {break;}num;printf(%d\n, fd);}printf(---\n);printf(%d\n, num);perror(1.txt);return 0;
}参考 https://blog.csdn.net/chan0311/article/details/72793411
下面这个链接的文章写的非常好 https://blog.csdn.net/qq_28114615/article/details/94590598