gpt4 book ai didi

c++ - 在 Redhat : alternatives to system() 上从 C++ 解压缩文件

转载 作者:行者123 更新时间:2023-11-30 02:08:20 26 4
gpt4 key购买 nike

我需要在运行 C++ 程序时解压缩文件(如 Waiting for unzip to finish before carrying on C++ code on a RedHat machine 中所述)

为此,我目前正在做这样的事情:

system("unzip /usr/bin/File/ZippedFile.gz -d /usr/bin/File/)

将“/usr/bin/File/ZippedFile.gz”解压缩到“/usr/bin/File/ZippedFile”没有问题。

这很好用。但是我注意到很多人似乎说使用

system()

是禁忌。

由于安全性和系统资源的原因,人们似乎不喜欢它(如此处讨论:http://www.cplusplus.com/forum/articles/11153/)。

但由于我希望程序等到解压缩完成,是否有可行的替代方案?

最佳答案

您可以使用普通的 zlib ,或 boost::iostream gzip facility .

系统本身并没有错,但您也可以为其编写一个不使用 fork 外壳的替代品, exec , waitmkstemp .虽然这很麻烦。使用 boost::gzip_decompressor如果你解压缩单个文件,对我来说是最好的 C++ 选项。如果您需要解压缩目录,则 fork 和 friend 可能会更好。请务必阅读 mkstemp .

有关 fork 和 exec 系列的速成类(class):http://www.yolinux.com/TUTORIALS/ForkExecProcesses.html

以使用 wait 为例为您的 child 终止:http://support.sas.com/documentation/onlinedoc/sasc/doc/lr2/wait.htm

有关创建临时目录的引用:http://www.gnu.org/s/hello/manual/libc/Temporary-Files.html

关于c++ - 在 Redhat : alternatives to system() 上从 C++ 解压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7022990/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com