2017-02-10 104 views
0
if(cmd == "zip") 
     { 
      string z = "tar cvf " + destination + " " + file; 
      system(z.c_str()); 
     } 

我想压缩一个文件。到一个给定的目的地。但是我的情况发生了什么,它是一个压缩文件的目的地。就像我在Linux中使用它,在Destination中给出“Desktop”,并在文件中给出文件名。所以它只在桌面上使桌面压缩文件没有扩展名。用C++编译tar文件压缩存档文件

+1

主要与C++无关。 –

回答

3

你可以这样做:

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

(变量,如果不受信任的,应进行消毒,牢记system()调用POSIX壳)

没有 “Z”,tar创建一个.tar文件,但是你必须自己指定文件名和扩展名 - 它不是自动的。

随着“Z”,它会创建一个.tar.gz文件(这是一个不同于zip文件共同tar不做zip文件)。

还有其他的选择。 有关更多详细信息,请参阅tar(1)


BTW,到system函数的调用在技术上是不是system call

+1

Upvote,但我真的没有看到在参数列表中使用'v'的理由,但是;-) – cfromme

+0

@cfromme谢谢。 v从OP复制。 – PSkocik