8825|7

86

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

vxworks下fopen和open打开文件问题,连续多次打开关闭文件50次以上时就失败了 [复制链接]

 main()
{
   while(1)
   {
      if(open(f.txt)打开文件成功)
      {
//dosomething;

      close()//关闭该文件
      }
      else
      {
        printf("打开出错");
      }
   }
}
上述伪代码实现的测试程序在vxworks下运行时,当循环次数在50多次时就开始报打开文件出错了(而在我实际程序中只打开20次它就报错了),如果我在colse()调用后面加上sleep(1),且至少是一秒时,程序就可以一直循环下去,不会报打开文件错误了(但这样的话实时需求无法满足)。 并且当我换成非系统调用函数fopen()和fclose()时也会出现相同问题。

我怀疑是vx下设置了最大打开文件句柄数maxnum(close()并未将文件关闭),能否定制内核改变maxnum呢,请高手指教!

有资料说函数dosFsInit()可以修改该maxnum,是否正确? 有没有方法可以让colse或者fclose在用户调用后马上就执行(真是的释放掉句柄资源)?

最新回复

vxWorks要重新下载到目标机上,而不是downloadable的模块  详情 回复 发表于 2008-11-3 14:57
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是这样的,在定制系统时候,会设置文件系统最多同时可以打开的文件数,一般都设置为50,即同时可以打开50个文件,如何超过就会报错。
按你上么讲的情况,应该是在关闭时又打开了文件即系统还没有处理完关闭文件操作,所以通过sleep延时就可以解决。你可以通过修改BSP,修改
最多可以同时打开文件的数量。
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
以前系统老是死,结果是打开n多串口,iosFdshow加devs看看。
开串口也这样测试过,到了50个就挂了。
 
 
 

回复

75

帖子

0

TA的资源

一粒金砂(初级)

4
 
vxworks的project中operating system components->IO system components->IO system,将参数NUM_FILES由默认的50改大点就行了,比如改成500
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
这个参数也影响同时打开的socket数量
 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 3 楼 frank_zhou 的回复:
vxworks的project中operating system components->IO system components->IO system,将参数NUM_FILES由默认的50改大点就行了,比如改成500

顶,正解。如果不用tornado或者workbench的GUI界面配置,也可以修改宏NUM_FILES的值。但是推荐用GUI界面去修改。
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 3 楼 frank_zhou 的回复:
vxworks的project中operating system components->IO system components->IO system,将参数NUM_FILES由默认的50改大点就行了,比如改成500


我修改了这个两个属性值,重新编译了vx,重启了系统,编译了测试程序然后download后执行还是出错,是不是我修改的属性并没有导到目标机上呢,我试过了3台目标机都没有把问题解决,不知道为什么了
 
 
 

回复

83

帖子

0

TA的资源

一粒金砂(初级)

8
 
vxWorks要重新下载到目标机上,而不是downloadable的模块
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表