2017-02-10 28 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; 

"Z" がなければ(変数は、信頼されていない場合は、POSIXシェルsystem()を呼び出すことを念頭に置いて、消毒しなければならない)、tarは.tar作成しますファイル名を指定する必要がありますが、ファイル名と拡張子は自動的に指定する必要があります。自動ではありません。 「Z」で

、それは(zipファイルの共通tarzipファイルをしないと異なっている).tar.gzファイルを作成します。

その他のオプションがあります。 詳細については、tar(1)を参照してください。


ところで、system関数の呼び出しは、技術的にsystem callではありません。

+1

Upvoteしかし、私は実際にパラメータリストで 'v'を使う理由は見当たりません;-) – cfromme

+0

@cfrommeありがとう。 vはOPからコピーされます。 – PSkocik

関連する問題