在 C 代码中解压 .xz 文件

Posted

技术标签:

【中文标题】在 C 代码中解压 .xz 文件【英文标题】:Unpack .xz file within C code 【发布时间】:2012-12-22 14:43:44 【问题描述】:

我的问题很简单。有没有办法从 C 代码中解压打包的 .xz 文件?我可能会调用一些默认的 linux 集成程序来为我解包,但它究竟是如何工作的呢?我调用了外部函数,然后以某种方式直接返回到提取文件的程序内容?假设 .xz 文件里面是文本文件,我想在之后阅读它。

【问题讨论】:

检查 system() api pubs.opengroup.org/onlinepubs/009695399/functions/system.html xzutils 下载附带文档和示例代码:git.tukaani.org/?p=xz.git;a=blob_plain;f=doc/examples/… 【参考方案1】:

我会使用system("xz -dl file.xz"),但这里有很好的信息和实现源代码的链接: http://tukaani.org/xz/format.html

【讨论】:

也是引入参数注入漏洞的好方法。 (不要将system() 用于您实际让其他人执行的任何代码。) 是的,像往常一样,如果您想拥有一个安全的系统,您想了解自己在做什么。而且 system() 并不是特别安全... 此外,您假设system 可以执行命令并且该命令(xz)存在于机器上......我会明确使用库(这成为正常的依赖项如果您不包含该软件,则为该软件) 我对@9​​87654325@ 做了一些研究,发现函数popen。就像在 python 中一样。那不是更好吗? @Jendas 在安全方面?到目前为止。

以上是关于在 C 代码中解压 .xz 文件的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 sharpcompress 解压 .xz (lzma2) 文件

在Linux下解压xz压缩文件

tar.xz文件如何解压

tar.xz文件解压和压缩

linux压缩/解压xz

Linux 解压xz格式文件及安装xz