良许Linux教程网 干货合集 详解Linux 文件句柄

详解Linux 文件句柄

在文件I/O中,要从一个文件读取数据,应用程序首先要调用操作系统函数并传送文件名,并选一个到该文件的路径来打开文件。该函数取回一个顺序号,即文件句柄(file handle),该文件句柄对于打开的文件是唯一的识别依据。要从文件中读取一块数据,应用程序需要调用函数ReadFile,并将文件句柄在内存中的地址和要拷贝的字节数传送给操作系统。

详解Linux 文件句柄

Linux句柄

Linux中所有的事物或资源都是以文件的形式存在,比如消息、共享内存、连接等,句柄可以理解为指向这些文件的指针。

对于这些句柄,Linux是有数量限制的,单个进程默认可以打开的句柄数上限,可以用以下命令来查看:

ulimit -a
img

查看某个进程的句柄数上限,命令是:

ulimit -a PID
img

单个进程句柄数的修改(系统重启后会恢复默认值)

ulimit -n 句柄数

永久修改单个进程句柄数

$ cat >> /etc/security/limits.conf 
img

说明:修改完成后,需要重新打开终端,使用 ulimit -a 查看句柄数

查询系统中指定进程占用的句柄数

$ lsof -n | grep [PID|进程名]| wc -l

查询系系统中进程占用的句柄数

$ lsof -n | awk '{print $2}' | sort | uniq -c | sort -nr | more

文件类型有以下几种: DIR:表示目录。 CHR:表示字符类型。 BLK:块设备类型。 UNIX: UNIX 域套接字。 FIFO:先进先出 (FIFO) 队列。 IPv4:网际协议 (IP) 套接字。

LINUX对能够打开的文件句柄的数量做了限制。限制是分为三个层面:系统层面,用户层面和进程层面。 如果某个进程打开的文件句柄超过限制,再打开文件就会报错。因此,在编程时,如果进程要占用大量文件句柄的话, 就要看看是否要调整最大可打开的文件句柄数,同时也要注意close释放掉不用的文件句柄。

系统层面

$ cat /proc/sys/fs/file-max

用户层面

ulimit -n

进程层面

$ cat /proc/PID/limits

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

img
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

邮箱地址不会被公开。 必填项已用*标注

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部