什么是文件描述符FD
文件描述符:Linux 系统中,把一切都看做是文件(一切皆文件),当进程打开现有文件或创建新文件时,内核向进程返回一个文件描述符,文件描述符就是内核为了高效管理已被打开的文件所创建的索引,用来指向被打开的文件,所有执行I/O操作的系统调用都会通过文件描述符。
文件描述符(File Descriptor)是一个用于表述指向被打开的文件引用的抽象化指标。在Unix、Linux和其他类Unix操作系统中,文件描述符是一个非负整数,用于指代被打开的文件。程序刚刚启动的时候,默认有三个文件描述符,分别是:0(代表标准输入),1(代表标准输出),2(代表标准错误)。如果此时去打开一个新的文件,它的文件描述符会是3。
文件描述符的主要目的是使大量的I/O系统调用不必要地为同一对象而指定标识符,其相关的主要系统调用有:read()、write()、fcntl()、select()、poll()等。文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于Unix、Linux这样的操作系统。
在Windows系统中,文件描述符的概念被句柄(Handle