学无止境……
分类: LINUX
2014-07-15 14:36:19
文件描述符在形式上是一个非负整数。实际上,它指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。
内核分配文件描述符的原则是:通俗讲就是从最小的开始。但是其中 0,1,2 被系统定义为 标准输入,标准输出,标准错误。在POSIX 中定义三个符号常量STDIN_FILENO、STDOUT_FILENO 和 STDERR_FILENO 来代替它们三个(包含在 <unistd.h>头文件中)。系统会为每一个进程自动打开上面三个文件(在很多代码中能看到close(0);close(1);close(2);就是在关闭他们仨),所以一般一个进程打开文件所对应的文件描述符就是从3开始…………。不信的运行下面代码。
点击(此处)折叠或打开
运行结果:
fd1: 3
fd2: 4
fd3: 5
注:文件描述符不是无穷大,可以通过命令 $ulimit –n查看一个进程最大分配的文件描述符,一般linux发行版都是1024,此值定义为 OPEN_MAX在