linux fopen函数 too many open files错误

来源:互联网 发布:9008端口救砖 编辑:程序博客网 时间:2024/06/10 06:27

原因:句柄被用完了

出现这种情况有会是以下几种情况导致的:

  1:文件句柄未关闭  包括普通文件、socket描述符、数据库连接等

  2:所有句柄虽然释放了,但是没有人工释放,在垃圾回收中积累着,在某一时刻爆发出错。

  3:在fclose(fp)之前,操作系统并未将缓冲区中的文件内容写入磁盘,导致写多次后打开的文件就多了

解决办法:

  1:通过ulimit 来修改 file opens选项的值(只使用当前会话)

  2:echo "8192" > /proc/sys/fs/fs-max  重启电脑(不一定管用)

  3:最好的办法就是检查源码,修改错误。

 

 

另外:如果fclose(fp),其中fp并未指向任何文件,这样会导致程序崩溃或出现内存错误。