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在用户调用后马上就执行(真是的释放掉句柄资源)?