开发者学堂课程【物联网开发- Linux 高级程序设计全套视频:文件描述符概述】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/660/detail/11029
文件描述符概述
文件描述符是非负整数,是文件的标识。用来代表所打开的文件。
用户使用文件描述符(file descriptor)来访问文件,对文件进行读写。用 Read write 进行文件描述符的传送,从而进行操作。
利用 oprn 函数打开一个文件时,内核会返回一个文件描述符。
每个进程都有一张文件描述符的表。
文件描述符的作用域:
进程,在进程中,文件描述符是独一无二的,不同的进程文件描述符的值可能相同,但是可能代表打开不同的文件。
进程刚被创建时,标准输入、标准输出、标准错误输出设备文件被打开,对应的文件描述符0、1、2记录在表中。
在进程中打开其他文件时,系统会返回文件描述符表中最小可用的文件描述符,0为最小但是不可用,它是代表标准输入文件,并将此文件描述符记录在表中。
如下:
0 |
Stdin |
1 |
stdout |
2 |
stderr |
3 |
Test.txt |
其中,3个文件描述符默认被打开,0—标准输入设备文件,1—标准输出设备文件,2—标准错误输出设备文件,再去打开一个文件(test.txt),系统会为打开的文件分配一个文件描述符,此文件描述符是最小的而且可用—3。
在此进程中3代表test.txt。每一个进程都会有相应的表。每一个文件描述符对应一个文件。
注意:
Linux 中一个进程最多只能打 开NR_OPEN_DEFAULT(即1024)个文件,故当文件不再使用时应及时调用close函数关闭文件。
0,1,2是被默认打开的,所以最多还可以打开1021个文件,如果打开更多的文件,open就会出错,进程当中的文件描述符就会不够用。