藍森林首頁 | 返回主頁 | 本站地圖 | 站內搜索 | 聯繫信箱 |
 您目前的位置:首頁 > 自由軟件 > 技術交流 > 應用編程


    

藍森林 http://www.lslnet.com 2006年6月6日 10:18


寫文件的問題,急~~~~~

while(1)
{
ofstream outfile( "filename");
        if(outfile)
        {
        outfile<<1;
        outfile.close();
        }
}
開始 more filename
還很正常,但是運行10秒左右之後
more filename
發現文件居然是空的
然後不斷的more,發現之後很少次可以看見文件中存在內容
是為什麼????

寫文件的問題,急~~~~~

忘了說了, 我使用的是Solaris
5~~~~~~~~
著急啊

寫文件的問題,急~~~~~

有沒有flush

可能是文件流沒有刷新的原因

寫文件的問題,急~~~~~

不會的,還能說詳細點嗎

寫文件的問題,急~~~~~

找一個與fflush函數一樣的功能

標準文件法我沒有使用過
不過應該有這個函數
可能叫
flush

寫文件的問題,急~~~~~

加了flush之後連一開始,文件就為空了

寫文件的問題,急~~~~~

你打開時本來就會空的
又不是添加方式打開
看看fflush的說明吧

寫文件的問題,急~~~~~

但是我在循環體中加入sleep,哪怕是usleep(1000)都不會出問題
我覺得會不會,在機器運行速度太快,從打開文件到flush再到close,一直到下一次打開文件,中間能讓我more的時間太短暫的問題????

寫文件的問題,急~~~~~

剛才沒有看ofstream說明
對不起


默認打開方式是寫打開
而不是APPEND方式打開


所以問題是每次打開時都會把以前的內容沖掉

換個打開方式

寫文件的問題,急~~~~~

謝謝,無雙大哥。
因為系統要求是循環操作,並記錄操作的位置在log裡,在斷電或者死機之後根據這個位置繼續運行。如果用append方式,這個log也太長了吧,是處理海量數據的。:-(

寫文件的問題,急~~~~~

我以前寫日誌時是每天寫一份
如果重起後上次日誌還沒有寫完,那麼打開上次文件繼續寫

你也可以分時寫日誌
這樣日誌會短點
並且可以看到一定信息

寫文件的問題,急~~~~~

另外你的要求只是記錄執行位置

那麼像你寫出的代碼已夠用了
如果想看寫了沒有可以用加斷點的方法

寫文件的問題,急~~~~~

但是我寫的那段代碼運行有問題啊,長時間運行就不行了(10秒以上):(

寫文件的問題,急~~~~~

寫的過程本來就很短

寫完後就關閉

然後打開時原來的文件內容又被沖掉


所以能看到文件中有內容的時間只是在打開前,關閉後
所以能不能看到是隨機的

寫文件的問題,急~~~~~

我在kill它之後
文件還是空的,我想可能也是時間太短了原因
所以我決定還是在其中讓他usleep好了
謝謝你了,無雙~~~~ :D



Copyright © 1999-2000 LSLNET.COM. All rights reserved. 藍森林網站 版權所有。 E-mail : webmaster@lslnet.com