系统最大同时允许打开的句柄数 linux最大文件句柄数

系统最大同时允许打开的句柄数 linux最大文件句柄数

刚才帮同学看了个程序,结构比较简单,一个计算函数,一个主函数。

编译无错,运行时,总是运行到第509次时就崩溃了。

简单看了下程序,主函数就是一个调用计算函数的循环,计算函数里面有若干次的文件读写操作和一次随机数生成调用,其他是大量的计算过程。

先扫了下代码,发现太乱,就先想看是不是随机数调用的问题,于是把随机数生成去掉运行,结果还是第509次运行出错,看来不是随机数的问题;接着把计算过程都注释掉运行,依然是第509次崩溃;最后目光集中到剩下的文件操作上,联想到509跟255的关系,猜测可能是文件句柄打开的数目达到了系统上限,虽然我自己从来没碰到过这种情况。

接着重点检查文件打开和关闭,果然,所有的文件打开关闭操作都有对应,唯独有一次没有关闭。于是 加上一条关闭语句,再运行,果然正常了,不再崩溃。

问题解决了,但为什么是509次呢?跟2的n次方没什么关系啊?想了下,可能是程序启动时系统默认打开了三个句柄的缘故,即标准输入文件stdin、标准输出文件stdout、标准错误输出文件stderr。

为了验证,搜索了一下,发现有一对可以获取和设置当前系统允许打开的最大句柄数的函数:_getmaxstdio()和_setmaxstdio()。不过这是windows的平台函数,其他系统平台有没有类似的函数没去深究。

写了个程序简单验证了一下,果然,当前系统允许的最大句柄数是512,512-3=509。

问题虽然不是很复杂,但进一步说明,一定要有良好的文件操作习惯。程序简单了还好,复杂了就难说了。

  

爱华网本文地址 » http://www.aihuau.com/a/25101014/237226.html

更多阅读

怎么增加系统最大音量 苹果怎么调节音量大小

怎么增加系统最大音量——简介在看电影的时候,系统声音放到最打,可是还可以感觉声音很小,怎么可以让在系统音量放到最大的情况下,在增大系统音量呢?怎么增加系统最大音量——方法/步骤怎么增加系统最大音量

Word 2003文件损坏而无法打开的修复方法 修复损坏的word文档

相信经常用word的朋友都遇到过这种情况:打开之前辛辛苦苦制作的word文档的时候,提示文件损坏无法打开。郁闷的要跳楼。今天就介绍一个方法来修复损坏的word文档,下面是具体的步骤。Word 2003文件损坏而无法打开的修复方法——步骤/方法

百度网盘怎么用迅雷下载大文件 百度云的资源在哪里找

百度网盘怎么用迅雷下载大文件——简介现在百度云资源多多,很多大文件下载想用迅雷下载该怎么下载呢?百度网盘怎么用迅雷下载大文件——工具/原料自己的百度网盘别人分享的大文件地址百度网盘怎么用迅雷下载大文件——方法/步骤

Win7系统设备管理器怎么打开? win7怎么打开系统属性

Win7系统设备管理器打开的方法虽然和Xp系统有点出入,但是万变不离其宗;那么Win7系统设备管理器怎么打开呢?方式一右击计算机,选择“设备”;如图:在打开的“计算机管理”中,找到“设备管理器”;如图:方式二开始——〉“搜索程序和文件

WIn8中控制面板在哪里?打开的五种方法 win8控制面板怎么打开

WIn8中控制面板在哪里?打开的五种方法——简介WIn8中没有了传统的开始菜单,很多人需要在控制面板进行操作,可是如何打开控制面板呢?我在这篇经验里教会大家五种方法来打开控制面板,看看哪个适合你吧。WIn8中控制面板在哪里?打开的五种方

声明:《系统最大同时允许打开的句柄数 linux最大文件句柄数》为网友等孤人分享!如侵犯到您的合法权益请联系我们删除