【问题标题】:How to write gz file in C via zlib and compress2如何通过zlib和compress2在C中编写gz文件
【发布时间】:2013-04-18 09:19:12
【问题描述】:

我正在使用 zlib 编写一个在多个线程中压缩数据的程序。所以我不能使用gzwrite。我正在使用 compress2()。

*dest_len = compressBound(LOG_BUFF_SZ);
err = compress2((Bytef*)compressed_buff->buff, dest_len, (Bytef*)b->buff, size, GZ_INT_COMPRESSION_LEVEL);
write(fd, compressed_buff->buff, compressed_buff->full);

但是当我尝试通过 gzip -d 解压缩文件时,我看到下一个输出:“不是 gzip 格式”。我究竟做错了什么?谢谢你的回答

【问题讨论】:

  • 你是否在不同的线程中压缩一个文件?
  • @AnishRam,实际上我压缩的不是文件,而是传入的缓冲区。这有点像日志系统。是的,我用不同的线程压缩它

标签: c io compression zlib


【解决方案1】:

compress()compress2() 压缩到 zlib format,而不是 gzip format。您需要使用较低级别的函数才能选择 gzip 格式。这些是deflateInit2()deflate()deflateEnd()。阅读zlib.h 中的文档以了解这些功能。之后,您还应该查看heavily documented example of their use

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 2014-07-09
    • 2021-01-09
    • 1970-01-01
    • 2017-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多