c++ - 从 C++ 使用 tar 创建压缩文件

标签 c++ linux system-calls tar

if(cmd == "zip")
        {
            string z = "tar cvf " + destination + "  " + file;
            system(z.c_str());
        }

我想压缩一个文件。到给定的目的地。但是在我的例子中发生的事情是它制作了一个压缩的目标文件。就像我在 Linux 中使用它一样,在目标中我给出“桌面”,在文件中我给出文件名。所以它只会在桌面上制作没有扩展名的桌面压缩文件。

最佳答案

你可以这样做:

string z = "tar cvzf " + destination + "/" + file + ".tar.gz  " + file;

(变量,如果不受信任,应该被清理,记住 system() 调用 POSIX shell)

如果没有“z”,tar 会创建一个 .tar 文件,但您必须自己指定文件名和扩展名——这不是自动的。

使用“z”,它创建一个 .tar.gz 文件(不同于 zip 文件——一个普通的 tar不执行 zip 文件)。

还有其他选择。 参见 tar(1)了解更多详情。


顺便说一句,对system 函数的调用在技术上不是system call。 .

关于c++ - 从 C++ 使用 tar 创建压缩文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42164556/

相关文章:

c++ - 一个用户崩溃时共享内存中的互斥锁?

c++ - 让 Windows 10 旁白者说出一些文字

linux - Bash如何从基于dn的ldif类型文件中选择多行

linux - 我们如何避免 Git 中 windows 和 linux 用户之间的文件命名冲突?

linux - 仅当文件存在且仅当文件不存在时,如何在 linux 中执行打开系统调用?

c++ - 在 lambda 中使用模板参数

c++ - 迷宫求解程序的回溯逻辑错误

c - pthreads 以相反的顺序运行

c - Linux :/proc/<PID>/exe return path to executable '/bin/bash' for process located at '/home/<USER>/new/v'

与系统调用混淆