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/