C fopen 返回值
使用fopen 打开一个存在的本地文件, 有时打得开, 有时打不开,并且fopen 返回值:bad file number ;
不知这是什么原因?? c 语言能不能保证100%每次都能打开一个本地存在文件??
[解决办法]
一般不会是fopen的问题,你这个问题,看起来像处理完多个文件之后,就出现了这个问题,问题出现的基本没有规律性,一般这种情况都是由于内存操作异常造成的,你检查一下,看是否有越界的内存读写操作。或则打开的问文件过多,文件id资源耗尽了。
[解决办法]
fopen返回后 检查errno
[解决办法]
为什么不在FILE *类型的变量上设置变量值改变断点调试呢?!
To set a breakpoint when a variable changes value
From the Edit menu, click Breakpoints.
Click the Data tab of the Breakpoints dialog box.
In the Expression text box, type the name of the variable.
Click OK to set the breakpoint.
[解决办法]
定位方法:
1、检查文件权限;
2、检查进程中是否耗尽了句柄,一个windows进程最大的句柄数貌似是512;
3、调进C库的代码(即fopen的源码),看是哪里出的问题。
第三种方法基本万能,前提是你有C库的源码,并且对源码有一定的了解。
[解决办法]
在打不开的时候,调用opened_files_view看看文件此时被谁独占打开?
http://www.nirsoft.net/utils/opened_files_view.html