Gibt es eine Möglichkeit, Befehlszeilen-Dienstprogramme auszuführen, z. gzip
, in eine C-App?Wie führe ich Bash-Befehle von C?
11
A
Antwort
15
Verwendung system()
:
#include <stdlib.h>
int status = system("gzip foo");
die man-Seite anzeigen (man 3 system
) für weitere Informationen darüber, wie es zu benutzen.
By the way, diese Frage hat bereits eine Antwort hier: How do I execute external program within C code in linux with arguments?
+3
Siehe: [** Warum System() -Funktion in C/C++ ** vermeiden] (http://stackoverflow.com/questions/19913446/why-to-avoid-system-function-in-c-c). Betrachten Sie stattdessen die 'execl'-Familie von Funktionen. –
warum nicht nur die C-Bibliothek verwendet für (de) Kompression (zlib)? – jayhendren
Wenn Sie es als "Bash-Befehl", ein la System() ausführen, machen Sie es falsch. Der direkte Aufruf mit einem System-Syscall der exec-Familie ist effizienter und weniger fehleranfällig. –