(六)文件描述符及最大打开文件个数

来源:互联网 发布:酷狗铃声制作专家 mac 编辑:程序博客网 时间:2024/04/30 17:35

一、文件描述符


  首先要明确一点,在linux系统中一切都可以看成是文件,你的文档是文件、程序是文件、设备也是文件、显示屏、键盘、网口都可以看做是文件,而且在linux中也确确实实是这样。而文件又可分为:普通文件、目录文件、链接文件和设备文件。
  文件描述符(file descriptor)是内核为了高效管理已被打开的文件所创建的索引,其是一个非负整数(通常是小整数),用于指代被打开的文件,所有执行I/O操作的系统调用都要通过文件描述符进行操作。
  一个进程默认打开3个文件描述符:

STDIN_FILENO   0
STDOUT_FILENO  1
STDERR_FILENO   2


POSIX标准规定:新打开文件返回文件描述符表中未使用的最小文件描述符。


二、最大文件打开个数


  在编写文件操作的或者网络通信的软件时,可能会遇到“Too many open files”的问题。这主要是因为文件描述符是系统的一个重要资源,虽然说系统内存有多少就可以打开多少的文件描述符,但是在实际实现过程中内核是会做相应的处理的,一般最大打开文件数会是系统内存的10%(以KB来计算)(称之为系统级限制),查看系统级别的最大打开文件数可以使用cat /proc/sys/fs/file-max命令查看。
  相关命令介绍:
  查看当前系统允许打开最大文件个数

cat /proc/sys/fs/file-max
当前默认设置最大打开文件个数1024


  查看修改限制命令的使用方法

ulimit -a


  修改默认设置最大打开文件个数为4096

ulimit -n 4096

4 0
原创粉丝点击