linux文件描述符管理

本文介绍了在项目开发中文件描述符的管理,包括查询系统文件描述符总量、单进程上限,检查进程占用的文件描述符,以及使用GDB关闭文件描述符以避免资源泄露的方法。
摘要由CSDN通过智能技术生成

        在实际的项目开发中,文件描述符是经常用到的并且在释放资源过程中也是很容易忽略的,使用之后不释放就会增加cpu负担,无异于内存泄漏;所以时刻掌握文件描述符的状态是非常重要的!下面介绍文件描述符的管理方法。

1. 文件描述符查询

        系统文件描述符总信息:

cat /proc/sys/fs/file-nr

        这个命令会输出三个数字,分别表示已分配的文件描述符数量、已分配但尚未使用的文件描述符数量和系统可用的最大文件描述符数量。已分配的文件描述符数量就是当前正在被使用的文件描述符数量。

        系统文件描述符数量上限:

cat /proc/sys/fs/file-max

        单个进程文件描述符上限:

ulimit -n

2. 查看某个进程所占用的文件描述符

ls -l /proc/$PID/fd
$PID:想要查看进程的pid
例如:
查看test进程所占用的文件描述符,test的进程pid为1515:
ls -l /proc/1515/fd

        会出现如下信息:

total 0
lrwx------    1 root     root            64 Jan  1 05:56 0 -> /dev/pts/2
lrwx------    1 root     root            64 Jan  1 05:56 1 -> /dev/pts/2
lrwx------    1 root     root            64 Jan  1 05:56 10 -> anon_inode:[eventpoll]
lrwx------    1 root     root            64 Jan  1 05:56 11 -> anon_inode:[eventpoll]
lrwx------    1 root     root            64 Jan  1 05:56 12 -> anon_inode:[eventpoll]
lrwx------    1 root     root            64 Jan  1 05:56 13 -> anon_inode:[eventpoll]
lrwx------    1 root     root            64 Jan  1 05:56 14 -> socket:[143471]
lrwx------    1 root     root            64 Jan  1 05:56 15 -> socket:[141981]

        其中0 -> /dev/pts/2;0:文件描述符编号;/dev/pts/2:文件描述符对应的文件;该可以查看文件描述符资源是否释放干净

3. 关闭文件描述符

        使用gdb附加进程来关闭文件描述符:

gdb -p PID #进入附加进程
#在gdb调试模式下执行如下命令:
(gdb) call close(文件描述符编号)
$1 = 0
例如:
gdb -p 1515#进入gdb调试
(gdb) call close(30)#关闭编号为30的文件描述符
$1 = 0#close返回0;表示成功关闭文件描述符

注意:如果报错:'close' has unknown return type; cast the call to its declared return type
转换类型:(gdb) call (int)close(30)
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

迷茫的蜉蝣

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值