Wie man einen Befehl ausführt und seine Ausgabe in C++ (POSIX) erhält
Hallo Kollegen! Ich habe gerade angefangen, C++ unter Linux zu lernen, und bin auf ein Problem gestoßen: Ich muss einen externen Befehl (z.B. `ls -la` oder `ping google.com`) ausführen und seine Ausgabe direkt im Programm abrufen. Ich habe `system()` ausprobiert – es funktioniert, gibt aber nur den Exit-Code zurück, während die Ausgabe selbst auf der Konsole erscheint. Ich möchte diese Ausgabe in einem String erfassen, um sie später zu verarbeiten.
Zum Beispiel schreibe ich ein Tool, das prüft, welche Prozesse laufen. Ich möchte `ps aux` ausführen und das Ergebnis analysieren. Aber wie macht man das in C++ im POSIX-Stil? Ich habe von `popen()` gehört, bin mir aber nicht sicher, ob das der beste Weg ist. Es gibt auch `fork()`, `exec()`, `pipe()` – das sieht für einen Anfänger kompliziert aus. Gibt es vielleicht eine einfache und zuverlässige Methode?
Hier ist mein aktueller Code, der nicht wie gewünscht funktioniert:
```cpp
#include
#include
int main() {
int result = system("ls -la");
std::cout << "Exit code: " << result << std::endl;
// Wo ist die Ausgabe? Sie erscheint nur auf dem Bildschirm, nicht in einer Variable.
return 0;
}
```