1.文件描述符
系统调用IO也叫文件IO
标准IO依赖于系统IO
文件描述符是在文件IO中贯穿始终的类型。
文件描述符(整型数,数组下标)
文件描述符是数组下标,之前我们曾经做过一个实验,不停的fopen打开文件,最多只能打开1021个,再加上三个(标准输出,标准输入,标准出错);一共1024个
这个1024就是数组大小,数组里面存放着地址,指向结构体,结构体里面是文件的一些信息。
1.文件描述符优先使用当前范围内最小下标 。
当123456数组下标都被使用后,然后关闭4,再打开的话那文件描述符就是4。
2.你将四中的地址复制到6,这时4和6都会指向同一个结构体,当4关闭时,4 6指向的同一个结构体会被关闭吗?不会,如果关闭那么6就会变成野指针。还因为文件信息里面除了位置指针还包含一个计数器。记录结构体引用的次数,当为0时,才会销毁这个结构体。引用计数:计数该结构体被引用的次数。(评论有人说这是硬连接的底层原理。)
一开始一个进程任何文件都不打开,但是012除外,这三个是stdin,stdout,stderr。但是012也是从父进程继承过来的,如果父进程没有或者在创建子进程的时候关闭某一个那么子进程或者将某一个重定向也不会有某一个文件描述符。
每一个进程都一个这样的数组。
当两个进程同时打开同一个文件,不会产生一个结构体,会产生两个结构体,当两个进程之间没有任何协议就对同一个文件进行读写的时候会造成竞争和冲突。
标签:文件,调用,下标,IO,描述符,数组,进程 From: https://blog.csdn.net/qq_63133692/article/details/137249394