高分求教,为什么无法用remove删除一个文件

DJay 2006-11-13 12:10:28
在多线程并发情况下删除失效,GetLastError返回32,说明对文件的使用未结束,但我分明已经fclose掉了,而且fclose也返回0成功了,但就是删不了,不知道大家有没有遇到这种情况阿?要如何解决呢?
...全文
345 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
DJay 2006-11-15
  • 打赏
  • 举报
回复
我的文件指针是采用公共变量来管理,多线程共用一个文件指针,其实在测试中,我就只有一个线程会调用文件指针,debug的时候,在remove前都可以看到文件指针已经变成无效指针了,也就是说明被关闭了,但就是不能被删除(但有些线程可以正常删除),晕死。
ps:在debug中观察文件指针发现,最后一次fwrite操作虽然成功返回,但文件指针上表示还是前一个数的内容,怀疑是fwrite缓存了操作,会不会就因为这样导致无法删除呢?
caocheng8230 2006-11-13
  • 打赏
  • 举报
回复
这问题在多线程设计的时候是常常遇到的.
caocheng8230 2006-11-13
  • 打赏
  • 举报
回复
可能是你的某些进程对该文件的使用没有结束
你在多线程并发情况下,fclose仅仅关闭的是该函数所在的线程的文件句柄但是该文件还正在被其它的线程所打开着
你的做法应该是检索所有线程下面,将与该文件句柄相关的都fclose,然后再删除就OK了,你可以试试看看
jixingzhong 2006-11-13
  • 打赏
  • 举报
回复
或者,
你的 remove 放到你的文件操作的线程后面 ...
jixingzhong 2006-11-13
  • 打赏
  • 举报
回复
用临界对象试试 ~~

保证线程执行时候的顺序,
多线程并发,
不好控制啊 ~~
nule 2006-11-13
  • 打赏
  • 举报
回复
同上
飞哥 2006-11-13
  • 打赏
  • 举报
回复
肯定是文件被使用中

将打开标示符关闭

再remove
mmqmjy 2006-11-13
  • 打赏
  • 举报
回复
并发控制是最头疼的事......
alan001 2006-11-13
  • 打赏
  • 举报
回复
是不是没有写'\\',

而直接写"....\.....\...."勒????

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧