In meinem Linux-Programm entpacken, ich möchte eine tar.gz-Datei Inhalt in ein bestimmtes Verzeichnis entpacken. Gibt es in C/C++ einen Systemaufruf oder eine C++ - Klasse, um Dateiinhalte aus der tar.gz-Datei zu extrahieren?wie kann ich tar.gz-Datei mit C++ Programm
Antwort
Wenn Sie <cstdlib>
enthalten können Sie anrufen:
system("your tar or gz command");
Ich kenne diesen Aufruf von System(). Ich habe in meinem Programm nacheinander 3 mal für verschiedene tar.gz-Dateien verwendet, aber das Programm wurde abgestürzt, nachdem die 3 mit Stack-Angabe ausgeführt wurde. Da der Aufruf von system() den Befehl als untergeordneten Prozess oder anderen Prozess ausführt. Beim aufeinanderfolgenden Aufruf stürzt der Stapel ab. – user3793746
hast du einen Absturzbericht erhalten? – PinkFloyd
Sie mehrere Libs wie libtar verwenden können.
Oder Sie können einen Systemaufruf verwenden, wie Sie bereits erwähnt:
system("tar -zxf /your/file.tar.gz")
http://www.cplusplus.com/reference/cstdlib/system/
Sie können es wie folgt tun:
system("tar -zxvf yourfile");
Sie können dies sehen:
Es gibt ausgezeichnete Bibliothek libarchive, die den Zugriff auf mehrere Archivformate unter Verwendung einer konsistenten API unterstützt. Sie können these examples folgen, wie es zu benutzen.
Wenn Sie auf Ubuntu sind, können Sie einfach diese Bibliothek installieren Befehl sudo apt-get install libarchive-dev
. Auf anderen Plattformen müssen Sie möglicherweise Quellcode herunterladen und diese Bibliothek selbst kompilieren.
Ein Vorteil der Verwendung von libarchive im Vergleich zu system()
Aufrufe ist nicht von Systemdienstprogrammen abhängig, und es sollte auch schneller arbeiten, weil es nicht verzweigt.
- 1. Wie kann ich c-Programm unter einem anderen
- 2. Mit C, wie kann ich auf den gleichen Speicherblock wie ein anderes C-Programm zugreifen?
- 3. Wie kann ich dieses kleine C-Programm in OCaml übertragen?
- 4. Wie kann ich das Programm in C neu starten?
- 5. Wie kann ich ein Programm korrekt versionieren?
- 6. Wie kann ich das Programm stoppen?
- 7. Wie kompiliere ich ein C-Programm mit cmd?
- 8. Wie kann ich ein Programm mit scanf mit DDD debuggen?
- 9. Wie kompiliere ich C-Programm auf der Kommandozeile mit MinGW?
- 10. Wie erstelle ich ein Autostart-C++ - Programm
- 11. Wie kann ich das Programm beenden?
- 12. Wie überprüfe ich mit C#, wo ein Programm installiert ist
- 13. Wie bekomme ich Konsolenausgabe in C++ mit einem Windows-Programm?
- 14. Wie kann ich ein Programm von meinem C# -Programm im versteckten Modus ausführen?
- 15. Wie kann ich mein Palidrom-Programm verbessern?
- 16. Wie kann ich laufen Beispiel Gürteltier Programm
- 17. Kann ich den Mustervergleich im C-Programm verwenden?
- 18. Wie kann ich ein Multithread-Programm profilieren?
- 19. Wie kann ich ein Dart-Programm "schlafen"
- 20. Wie kann ich ein Go-Programm kompilieren?
- 21. Wie kann ich mein Programm in Swift mit RxSwift
- 22. Wie erstelle ich Tags in C/C++ - Programm
- 23. Wie übergebe ich eine Struktur von einem nicht verwalteten C++ - Programm an ein C# -Programm?
- 24. Wo kann ich lernen, wie man ein C++ Programm mit dem Betriebssystem (Linux) in Verbindung bringt?
- 25. Wie kann ich einen Perl-Interpreter in mein C# -Programm mit Mono unter Linux einbetten?
- 26. Wie kann ich 'ls' mit Optionen aus einem C-Programm ausführen?
- 27. C++ - OpenCV-Programm kann nicht kompiliert werden
- 28. C-Programm Befehlszeilenargument mit Leerzeichen
- 29. C-Programm: Einfache Mathematik-Programm
- 30. C++ - Programm mit C# GUI verbunden
[tar] (http://stackoverflow.com/questions/4812837/c-library-to-make-tar-files) und [gz] (http://stackoverflow.com/questions/624250/how- do-i-Lese-Schreib-gzip-Dateien) – Unda
möglich Duplikat [Wie eine .gz-Datei Zeile-für-Zeile in C++ lesen?] (http://stackoverflow.com/questions/3201538/how-to- read-a-gz-Datei-Zeile-für-Zeile-in-c) – bobah
@bobah: Dies ist kein Duplikat. verknüpfte Frage spricht über einzelne .gz-Datei, während dies über .tar.gz-Archiv mit vielen Dateien darin ist – mvp