RFs类的GetDir函数出现的问题
发布日期:2021-09-28 09:31:49
浏览次数:2
分类:技术文章
本文共 1017 字,大约阅读时间需要 3 分钟。
具体来说是:为了获取c:/system/install/logs下的所有文件与目录,调用了GetDir函数。但令人奇怪的是调用这个函数时手机竟然直接重起了,任何错误提示也没有。试了好多次都是如此。
经过调试发现在时,在撤销一个sis的安装时,c:/system/install/logs下会创建2个临时文件,然后这两个文件立即又被系统删除了。而恰好是在这个时候我的程序调用了GetDir函数,所以我怀疑是不是这两个文件在GetDir函数运行的时候被删除了(比如在GetDir执行的前半段这两个文件还存在,并且GetDir函数中已经保存了这两个文件的信息了,但随后这两个文件就被删除了)而导致系统级的错误,使机器直接重起。我用的手机是nokia6600。我试过其他的目录,程序都能正常工作。并且如果在程序中去掉调用GetDir这一行代码也不会有任何问题,一旦加上了就回重起,所以应该不会是我程序的问题。并且这个问题有一定的随机性:不会每次都出现,但一般5次之内肯定会出现。我也试过改变GetDir的参数,但仍然无用
程序的代码其实很简单,编写一个简单的活动对象程序,采用RFs的NotifyChange()函数监控c:/system/install/logs下的文件写事件,在程序得到文件服务器的文件写事件通知之后,使用GetDir()获取这个目录下的所有文件信息。就是这样一个函数导致系统重起。
另外自己也模拟重现这个问题了,使用一个程序对系统内任一的目录进行文件写事件监控,同时编写另外一个程序在这个目录下先进行文件创建、写操作,然后再马上删除这些文件。这样做就是想模拟一下在c:/system/install/logs出现的事件:让第一个程序的GetDir()还没有完成的时候第二个程序就已经把新创建的文件删除了,果然系统又重起了,问题重现了。这我已经做过很多的测试了。可以肯定不是我得程序的问题,因为对其他的目录如果下面的子文件没有在GetDir()时被删除的话都不会出现这个问题,而一旦在GetDir()时把文件删除了(注意:既不在GetDir()之前,也不在之后),就极有可能出现这个机器直接重起的问题。另外使用RDir类的同步Read()也会这样,但我还没有试过异步的。我估计CDirScan也会如此,因为其本质上就是使用RFs的GetDir()方法。不知大家在获取一个目录下的所有子文件、子目录上还有什么好的建议。转载地址:https://blog.csdn.net/gooer/article/details/2823421 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月13日 06时00分09秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
【Leetcode刷题篇】leetcode79 单词搜索
2019-04-26
【Leetcode刷题篇】leetcode300 最长上升子序列
2019-04-26
【Leetcode刷题篇】leetcode394 字符串解码
2019-04-26
【Leetcode刷题篇】leetcode152 乘积最大数组
2019-04-26
【Leetcode刷题篇】leetcode56 合并区间
2019-04-26
【Leetcode刷题篇】leetcode210 课程表II
2019-04-26
【Leetcode刷题篇】leetcode207 课程表
2019-04-26
【Leetcode刷题篇】leetcode322 零钱兑换
2019-04-26
【Leetcode刷题篇】leetcode437 路径总和III
2019-04-26
【Linux篇】Linux常用命令之性能优化
2019-04-26
【面试篇】JVM体系
2019-04-26
【Leetcode刷题篇】leetcode406 根据身高重建队列
2019-04-26
【Leetcode刷题篇】leetcode581 最短无序连续子数组
2019-04-26
【Leetcode刷题篇】leetcode538 把二叉搜索树转换为累加树
2019-04-26
【多线程与高并发】线程的优先级是怎么回事?
2019-04-26
【多线程与高并发】Java守护线程是什么?什么是Java的守护线程?
2019-04-26
【Leetcode刷题篇/面试篇】-前缀树(Trie)
2019-04-26
【Leetcode刷题篇】leetcode337 打家劫舍III
2019-04-26
【Leetcode刷题篇】leetcode4 寻找两个正序数组的中位数
2019-04-26
【Leetcode刷题篇】leetcode316 去除重复字母
2019-04-26