您的位置:首页 > 其它

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

2016-12-29 10:41 155 查看

一、文件描述符

  首先要明确一点,在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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: