为什么,用AfxBeginThread生成的线程,调用fopen时有时会出错。返回NULL
例如:
    AfxBeginThread(a,null);
    a()
    {
       FILE *P=fopen("c:\\hh.txt","a+");
    }
    P有时为NULL。急!!!!!!!!

解决方案 »

  1.   

    用GetLastError()看一看是什么原因导致的
      

  2.   

    的确是这样,fopen是C语言的库函数,使用在VC++编译器环境下,有诸多限制,很可能问题出在程序的其他地方。
      

  3.   

    ms之所以重新写了CRT,就是想让他支持multithread, 在fopen的内部函数里开启了一个锁,实现文件的串行访问,所以控不控制临界资源没有意义,实际上如果你的线程在第一次成功打开文件后,如果这个线程始终不关闭这个文件,别的线程试图a+方式打开这个文件绝对会返回NULL, 详细代码请参看vc带的CRT源代码