所有对设备和文件的操作都是使用文件描述符来进行的。
文件描述符是一个非负的整数,它是一个索引值,并指向在内核中每个进程所打开的文件的记录表:当打开一个现存文件或创建一个新文件时,内核就向进程返回一个文件描述符;当需要读写文件时,需要把文件描述符作为参数传递给相应的函数。
通常,一个进程启动时,都会打开3个文件:
标准输入:对应文件描述符为0(STDIN_FILENO)
标准输出:对应文件描述符为1(STDOUT_FILENO)
标准出错处理:对应文件描述符为2(STDERR_FILENO)
这三个常数定义在头文件<unistd.h>中
文件描述符的范围是0-OPEN_MAX。
用Linux的命令ulimit -n可查看系统打开文件的数量(linux:1024)。
查看linux文件描述符的三种方式:
sysctl -a | grep -I file-max –color
cat/proc/sys/fs/file-max
ulimit -n
注意:sysctl和proc文件系统中查看到的数值是一样的,这属于系统及限制,它是限制所有用户打开文件