2014-04-12 23 views
1

我對zlib有疑問。我怎麼知道寫入的壓縮字節數?我正在使用gzwrite(...)。正如我們所知,它返回未壓縮(實際)字節的數量。如何獲取在c/C++中使用gz lib編寫的壓縮字節數?

我是否應該使用其他API而不是gzwrite()

我在做什麼, - 我有一個.gz輸出文件。當我有一些可用的內容時,我一直在寫文件。我也想跟蹤文件,使其不會超過一定的大小。我不想使用stat() linux API,因爲我的寫作非常頻繁。

對此提出建議?

+1

究竟是你想解決的問題? –

+0

我想寫調試日誌文件的大小最大10 MB(壓縮)。我從內部模塊獲取日誌。所以,當我獲得日誌時,它可以是1Kb或30KB,沒有固定的大小。我需要繼續將日誌添加到輸出文件壓縮方式。我正在爲這件事情使用gzwrite。當輸出文件達到10MB時,我用另一個新名稱創建另一個文件。所以要檢查大小10MB,我需要跟蹤大小。如上所述,日誌傳入非常頻繁,所以我不想使用任何系統調用,例如stat()。 –

回答

3

zlib爲此提供了gzoffset()函數。它返回正在讀取或寫入的文件中的當前偏移量。

+0

我會試試這個。任何樣本或例子都會有幫助。 –

+0

'number_of_compressed_bytes_written = gzoffset(gzip_file_handle);' –

+0

嗨,它工作。謝謝!最初它給0,但做了gzflush(文件,Z_FINISH)後,它給了適當的價值。經常調用gzoffset()是否是開銷?因爲在我的SW中這將始終在設備上。 –

相關問題