使用系统调用与基于库的方法压缩目录的优缺点
Pros and cons of using a system call vs library based approach to compress a directory
>场景:
我正在运行带有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
问题:
我想知道对目录进行系统调用与使用 zlib、zipios 等库的优缺点。
system()
通常不受欢迎,因为它存在潜在的安全风险。 在你的特定情况下,一切都明确说明,你会没事的。
您可以在程序中对其进行编码,以编程方式进行处理和处理,而不是将其掏出,这是正确的方法。
只要你的压缩包名称和目录都是硬编码的,我想不出任何安全问题,但我会小心你确定你没有覆盖任何东西或类似的东西。
如果除了您自己之外的任何人甚至能够触摸您的服务器,请不要使用system()
。
- 至少您不会检查当前代码中的结果。您不知道压缩是否失败。
您至少必须检查退出代码。 - 通常,
tar
在命令行中不可用(例如,在窗口上)。
这不是你的情况,所以你可以忽略这一点。 - 自定义库应提供更灵活的压缩。像暂停,选择文件,无限数量的文件等。
相关文章:
- 为不同配置设置MSVC_RUNTIME_LIBRARY的正确方法是什么
- 通过方法访问结构
- 最小硬币更换问题(自上而下方法)
- C++为构建时间获取QDateTime的可靠方法
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 处理多个异常集合的C++方法
- C++中高效的大型稀疏块压缩线性方程
- 嵌入方指针压缩已禁用
- C++使用整数的压缩数组初始化对象
- 连接和压缩标准::vector<std::字符串的最佳方法>
- 使用 AVX2 将 8 位从 32 位值 (__m256i) 解压缩到__m256的最快方法
- 使用系统调用与基于库的方法压缩目录的优缺点
- 将位解压缩为单精度浮点的最快方法
- 数据压缩方法
- 使用 zlib 解压缩.zip文件的简单方法
- 从C++解压缩 ZIP 的最简单方法
- 寻求更好的编码和压缩数字的方法
- 将目录压缩为单个文件的方法有哪些
- 在c++中读取压缩的gz文件(重文件)的有效方法
- 是否有一种方法来检查缓冲区是否在Brotli压缩格式