2012-08-07 28 views
10

Piszę program C w systemie Android/Linux, który uruchamia polecenie systemowe. Polecenie wyprowadza jakiś tekst na standardowe wyjście i próbuję przechwycić wynik do łańcucha znaków lub tablicy znaków.Uzyskiwanie danych wyjściowych polecenia systemowego ze stdout w C

Na przykład:

system("ls"); 

by wyświetlić zawartość bieżącego katalogu do stdout i chciałbym być w stanie uchwycić te dane do zmiennej programowo w C

Jak to zrobić Zrób to?

Dzięki.

Odpowiedz

13

Chcesz użyć popen. Zwraca strumień, taki jak fopen. Musisz jednak zamknąć strumień przy pomocy pclose. Dzieje się tak, ponieważ pclose zajmuje się czyszczeniem zasobów związanych z uruchomieniem procesu potomnego.

FILE *ls = popen("ls", "r"); 
char buf[256]; 
while (fgets(buf, sizeof(buf), ls) != 0) { 
    /*...*/ 
} 
pclose(ls); 
+0

Dzięki, to zadziałało. – user1118764

Powiązane problemy