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

Я хотел сжать файл. к определенному месту назначения. Но то, что происходит в моем случае, это сжатый файл назначения. Как я использую его в Linux, а в Destination я даю «Desktop», а в файле я даю имя файла. поэтому он только делает файл сжатия рабочего стола без расширения на рабочем столе.Создание сжатых архивов с tar из C++

+1

Не так много общего с C++. –

ответ

3

Вы можете сделать:

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

(переменные, если ненадежный, следует продезинфицировать, имея в виду, что system() вызывает POSIX оболочки)

Без "г", деготь создает .tar файл, но вы должны указать имя файла и расширение самостоятельно - оно не является автоматическим.

С «г», он создает .tar.gz файла (который отличается от zip файлов общего tar не делает zip файлов).

Есть другие варианты. См. tar(1) для получения более подробной информации.


Кстати, вызов функции system технически не system call.

+1

Upvote, но я действительно не вижу причины использовать 'v' в списке параметров, однако ;-) – cfromme

+0

@cfromme Спасибо. V копируется из OP. – PSkocik

Смежные вопросы