Closed. This question is opinion-based。它当前不接受答案。












想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。

去年关闭。



Improve this question




方案:
我正在运行带有C++应用程序的嵌入式Linux发行版。我只需要压缩目录,然后将压缩后的输出放置在某个位置即可。而已。

我知道我们可以在命令行界面上使用以下命令来tar压缩目录。
tar cvzf directory.tar.gz /path/to/directory

我看到我可以选择在C++中运行系统命令。以下是一个示例。
void CompressDirectory() {
    std::system("tar cvzf directory.tar.gz /path/to/directory");
}

环境:
嵌入式Linux

问题:
我想知道进行系统调用以将tar压缩为目录的利弊,而不是使用像zlibzipios等库的利弊。

最佳答案

system()通常不受欢迎,因为与之相关的潜在安全风险。在明确说明所有内容的特定情况下,您会没事的。

您可以在程序中对其进行编码,以便以编程方式进行处理和处理,而无需脱壳,这是正确的方法。

只要您的tarball名称和目录都是硬编码的,我就不会想到任何安全问题,但是我要小心,以确保您不会覆盖任何东西或类似内容。

如果您自己以外的其他人甚至可以触摸您的服务器,请不要使用system()

10-04 22:54
查看更多