LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 678|回复: 5

打开文件夹、文件出问题

[复制链接]
发表于 2007-4-3 18:52:22 | 显示全部楼层 |阅读模式
不知道大家遇到这样的问题没?我的程序是循环运行一个函数,当循环到第128次时函数里的所有打开文件夹或者文件的地方都提示文件夹或文件不存在,由于代码太多我只能贴出打开文件和文件夹的代码:

  1.         if((dp = opendir("/proc")) == NULL)//打开/proc文件夹
  2.         {  
  3.                 printf("Error: can't open /proc\n");  
  4.                 return -1;
  5.         }  
  6.    
  7.         while((dirp = readdir(dp)) != NULL)//遍历/proc文件夹
  8.         {
  9.         .....
  10.         }
  11.         .....
  12.         ....
  13.         if((fp = fopen(statpath, "rb")) ==NULL)
  14.         {
  15.                 printf("Error: can't open %s\n", statpath);
  16.                 fclose(fp);
  17.                 return -1;//如果读失败返回-1
  18.         }
  19.         ...
复制代码
发表于 2007-4-3 20:16:57 | 显示全部楼层
/proc下的东西是动态的
是不是你循环到128次时,正好要打开的文件或者目录被撤销了
另外,fopen返回NULL,就不需要fclose了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-3 20:23:53 | 显示全部楼层
没有,我读的那几个文件一直都在。
回复 支持 反对

使用道具 举报

发表于 2007-4-3 22:00:38 | 显示全部楼层
楼主的程序中有 closedir 吗?没有它的话在若干次循环后是会出现错误的,具体次数依赖具体环境
回复 支持 反对

使用道具 举报

发表于 2007-4-3 22:51:02 | 显示全部楼层
嗯,出错后看看errno,是不是EMFILEh或者ENFILE
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-4-4 08:24:49 | 显示全部楼层
真是谢谢了,我忘记加closedir了,找了一晚上也没找出原因。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表