open函数不稳定分析

tuobana123 2008-10-15 01:19:13
用c编写了一个简单应用程序,使用交叉编译器进行编译,将其放到windows mobile操作系统的手机上执行的时候,发现应用程序有时候执行成功,有时候不能执行成功,分析发现是里面的open函数,在打开一个已存在的文件的时候,出现有时可以成功,有时不可以的问题.

请教各位,open函数为什么会出现这种情况呢?
...全文
55 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xqhrs232 2008-10-16
  • 打赏
  • 举报
回复
MS应该不会有这样的问题,肯定是你那个地方整错了,传的参数不对?还是你的AP没有真正关闭,你又去打开那个AP了。
tuobana123 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 comiunknown 的回复:]
解决办法:
每次Open那个文件之前创建一个Mutex:
HANDLE hMutex = ::CreateMutex(NULL, FALSE, L"FileOpen Mutex");
if (GetLastError() == ERROR_ALREADY_EXISTS)
return 0;
用完那个文件关闭后释放Mutex:
ReleaseMutex(hMutex);
[/Quote]

我测试了,没有作用,
tuobana123 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pknife 的回复:]
比如文件已经被打开。
[/Quote]
就算是第一次执行,有时候也会出现打不开的情况,
tuobana123 2008-10-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 pknife 的回复:]
比如文件已经被打开。
[/Quote]

我第一次执行也有类似的情况,第一次执行文件不可能说已经被打开!
comiunknown 2008-10-15
  • 打赏
  • 举报
回复
解决办法:
每次Open那个文件之前创建一个Mutex:
HANDLE hMutex = ::CreateMutex(NULL, FALSE, L"FileOpen Mutex");
if (GetLastError() == ERROR_ALREADY_EXISTS)
return 0;
用完那个文件关闭后释放Mutex:
ReleaseMutex(hMutex);

小李匪盗 2008-10-15
  • 打赏
  • 举报
回复
比如文件已经被打开。

7,656

社区成员

发帖
与我相关
我的任务
社区描述
Windows Phone是微软发布的一款手机操作系统,它将微软旗下的Xbox LIVE游戏、Zune音乐与独特的视频体验整合至手机中。
社区管理员
  • Windows客户端开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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