我用C寫客戶端服務器應用程序的服務器,我必須將日誌保存到文件中。fprintf有沒有「提交」? (防止服務器死亡時數據丟失)
我使用fprintf將其寫入文件,但是當服務器關閉時,我丟失了文件中的數據,導致我沒有關閉filedescriptor,是否有任何函數告訴我的程序保存數據?
Thx
我用C寫客戶端服務器應用程序的服務器,我必須將日誌保存到文件中。fprintf有沒有「提交」? (防止服務器死亡時數據丟失)
我使用fprintf將其寫入文件,但是當服務器關閉時,我丟失了文件中的數據,導致我沒有關閉filedescriptor,是否有任何函數告訴我的程序保存數據?
Thx
如果你fflush每fprintf後它有幫助。
fflush
應該做你想做的事 - 它確保所有的輸出被明確地寫入文件而不是例如。被緩存供以後寫入。這樣就可以將數據移出用戶空間。
sync
然後可以使用 - 它會導致所有緩衝文件更改被物理寫入(儘管根據規範,在寫入完成之前它不需要阻塞,所以您可以確定它們已經啓動但不是它們'已完成)。
也謝謝你;-) – user1097772 2012-03-09 04:55:38
@pst不,好點。我會編輯。 – Tommy 2012-03-09 05:14:47
Thx,這正是我所需要的;-) – user1097772 2012-03-09 04:53:55
另外,fflush((FILE *)NULL)將會刷新所有打開的文件 – 2012-03-09 05:08:02