Heim >Backend-Entwicklung >C++ >Wie erfasst man Echtzeit-Systembefehlsausgaben in C/C mit „popen'?

Wie erfasst man Echtzeit-Systembefehlsausgaben in C/C mit „popen'?

Linda Hamilton
Linda HamiltonOriginal
2024-12-05 14:43:15567Durchsuche

How to Capture Real-time System Command Output in C/C   using `popen`?

Systemausgabe mit Popen erfassen

Frage:

Wie man die realen Daten effektiv erfasst- Zeitausgabe eines mit system() aufgerufenen Systembefehls, z. B. system("ls"), zur weiteren Verarbeitung in C/C ?

Antwort:

Die Popen-Funktion bietet eine effiziente Methode zum Erfassen der Ausgabe von Systembefehlen. Seine Syntax lautet:

#include <stdio.h>

FILE *popen(const char *command, const char *type);

int pclose(FILE *stream);
  • Befehl: Gibt den auszuführenden Systembefehl an.
  • Typ: Gibt den Modus zum Öffnen des Streams an. Normalerweise verwenden Sie „r“ zum Lesen (stdout) oder „w“ zum Schreiben (stdin).

Vorgang:

  1. So öffnen Sie ein Stream zum Lesen der Befehlsausgabe verwenden Sie:
FILE *stream = popen(command, "r");
  1. Lesen Sie den Stream wie jeden anderen Eingabequelle:
char buffer[1024];
while (fgets(buffer, sizeof(buffer), stream) != NULL) {
    // Process each line of output
}
  1. Schließen Sie den Stream, wenn Sie fertig sind:
pclose(stream);

Beispiel:

#include <stdio.h>

int main() {
    FILE *stream = popen("ls", "r");
    if (stream != NULL) {
        char buffer[1024];
        while (fgets(buffer, sizeof(buffer), stream) != NULL) {
            printf("%s", buffer);
        }
        pclose(stream);
    }
    return 0;
}

Das obige ist der detaillierte Inhalt vonWie erfasst man Echtzeit-Systembefehlsausgaben in C/C mit „popen'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn