RFs類的GetDir函式出現的問題

2021-04-19 20:12:22 字數 587 閱讀 5948

程式的**其實很簡單,編寫乙個簡單的活動物件程式,採用rfs的notifychange()函式監控c:/system/install/logs下的檔案寫事件,在程式得到檔案伺服器的檔案寫事件通知之後,使用getdir()獲取這個目錄下的所有檔案資訊。就是這樣乙個函式導致系統重起。

另外自己也模擬重現這個問題了,使用乙個程式對系統內任一的目錄進行檔案寫事件監控,同時編寫另外乙個程式在這個目錄下先進行檔案建立、寫操作,然後再馬上刪除這些檔案。這樣做就是想模擬一下在c:/system/install/logs出現的事件:讓第乙個程式的getdir()還沒有完成的時候第二個程式就已經把新建立的檔案刪除了,果然系統又重起了,問題重現了。這我已經做過很多的測試了。可以肯定不是我得程式的問題,因為對其他的目錄如果下面的子檔案沒有在getdir()時被刪除的話都不會出現這個問題,而一旦在getdir()時把檔案刪除了(注意:既不在getdir()之前,也不在之後),就極有可能出現這個機器直接重起的問題。

另外使用rdir類的同步read()也會這樣,但我還沒有試過非同步的。我估計cdirscan也會如此,因為其本質上就是使用rfs的getdir()方法。

不知大家在獲取乙個目錄下的所有子檔案、子目錄上還有什麼好的建議。

inline函式出現無法解析的錯誤

還是我朋友的那個專案,編譯完告訴我他寫的乙個函式編譯的時候出現了無法解析的錯誤。哦,無法解析就是 unresloved 那個錯誤嗎,就是找不到函式的實現咯。告訴朋友在 上把函式的實現show了一下,發現是個inline函式,就告訴朋友把inline去了試試,嘿嘿,果然行了。別忙,為啥子inline就...

關於在建構函式出現的異常

1 乙個類在new過程中出現異常時,其所佔記憶體會被delete掉 會呼叫operator delete函式 這是編譯器的責任,我自己沒有幹好的事,我就消毀,不給別人新增麻煩.但其析構函式不會被呼叫.2 乙個類在new過程中沒有出現問題,那麼,delete的任務就交給程式設計師了.3 new cha...

sql中replace函式出現的錯誤

由於伺服器變更,要將文字欄位中的伺服器位址進行替換 字段型別 text 測試過程 update image server set image text replace image text,url1,url2 錯誤資訊 函式 replace 的引數 1 的資料型別 text 無效。我懷疑是text型...