|
藍森林 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 |
| |