Heim >Backend-Entwicklung >C++ >Wie kann ich stdout von einem system()-Befehl in C/C erfassen?
Standardausgabe von einem system()-Befehl in C/C erfassen
Beim Ausführen eines Systembefehls mit system() ist es wichtig, Folgendes zu tun Erfassen Sie die Ausgabe zur weiteren Verarbeitung. C/C bietet verschiedene Ansätze, um dies zu erreichen, wobei sich die Funktion popen() als zuverlässige Lösung erwiesen hat.
Funktion popen()
Die Funktion popen() wird geöffnet eine Pipe aus der Shell und startet einen Prozess durch Ausführen des angegebenen Befehls. Es gibt einen Stream-Zeiger FILE * zurück, der mit der Pipe verbunden ist und Lese- und Schreibvorgänge ermöglicht.
Syntax und Verwendung
Die Syntax von popen() ist wie folgt folgt:
#include <stdio.h> FILE *popen(const char *command, const char *type);
wobei:
Um die Standardausgabe eines Systembefehls zu erfassen, verwenden Sie:
FILE *fp = popen(command, "r");
Die Datei *fp stellt einen Stream dar, der mit der Standardausgabe des Befehls verbunden ist. Sie können dann fgetc(), fgets() oder andere Stream-Manipulationsfunktionen verwenden, um die Ausgabe zu lesen.
Beispiel
char buffer[BUFSIZ]; FILE *fp = popen("ls", "r"); while (fgets(buffer, BUFSIZ, fp) != NULL) { printf("%s", buffer); } pclose(fp);
Schließen der Pipe
Sobald Sie mit dem Lesen der Ausgabe fertig sind, ist es wichtig, die Pipe mit pclose() zu schließen, um die zugehörige Datei freizugeben Ressourcen:
int status = pclose(fp);
Hinweis: Beim Erfassen von stdout mit popen() werden alle Fehler übernommen, die vom externen Befehl festgestellt werden. Erwägen Sie, den Rückgabewert von pclose() zu überprüfen, um etwaige Fehler zu erkennen.
Das obige ist der detaillierte Inhalt vonWie kann ich stdout von einem system()-Befehl in C/C erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!