概论
在Linux系统中一切皆可以看成是文件,文件又可分为:普通文件、目录文件、链接文件、设备文件等。文件描述符(file descriptor)是内核为了高效管理已打开文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都通过文件描述符。程序在刚启动的时候,0是标准输入,1是标准输出,2是标准错误。如果此时去打开一个新的文件,它的文件描述符是3。POSIX要求每次打开文件时(含socket)必须使用当前进程中最小的文件描述符号码,因此,在网络通信过程中稍不注意就有可能造成串话。
如下:
文件描述符 | 用途 | POSIX名称 | stdio流 |
---|---|---|---|
0 | 标准输入 | STDIN_FILENO | stdin |
1 | 标准输出 | STDOUT_FILENO | stdout |
2 | 标准错误 | STDERR_FILENO | stderr |