2015-04-20 6 views
11

Czy istnieje sposób uruchamiania narzędzi wiersza polecenia, np. gzip, do aplikacji C?Jak wykonać polecenie bash z C?

+0

dlaczego nie wystarczy użyć biblioteki C do (de) kompresji (zlib)? – jayhendren

+1

Jeśli uruchomisz go jako "polecenie bash", a la system(), robisz to źle. Bezpośrednie wywołanie z rodziną exec-syscall jest bardziej wydajne i mniej podatne na błędy. –

Odpowiedz

15

Zastosowanie system():

#include <stdlib.h> 
int status = system("gzip foo"); 

Zobacz stronę man (man 3 system) w celu uzyskania szczegółowych informacji na temat, jak go używać.

Nawiasem mówiąc, to pytanie jest już odpowiedź tutaj: How do I execute external program within C code in linux with arguments?

+3

Zobacz: [** Dlaczego warto unikać funkcji systemowej (c/C++ **) (http://stackoverflow.com/questions/19913446/why-to-avoid-system-function-in-c-c). Zamiast tego spójrz na rodzinę funkcji 'execl'. –