Heim >Backend-Entwicklung >C++ >Wie kann ich stdout von einem „system()'-Befehl in C/C effizient erfassen?

Wie kann ich stdout von einem „system()'-Befehl in C/C effizient erfassen?

DDD
DDDOriginal
2024-12-04 21:39:15980Durchsuche

How Can I Efficiently Capture stdout from a `system()` Command in C/C  ?

Standardausgabe von einem system()-Befehl optimal erfassen

In C/C die Ausgabe einer externen Anwendung erfassen, die über system() gestartet wurde ist für die Weiterverarbeitung unerlässlich. Die Funktion popen() bietet eine effiziente Lösung für diese Aufgabe.

Laut Popen-Handbuch:

#include <stdio.h>

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

int pclose(FILE *stream);

So verwenden Sie popen():

  1. Deklarieren eine FILE*-Variable zum Speichern des Streams.
  2. Rufen Sie popen() mit dem Befehl auf, den Sie ausführen möchten, und der Art der Verarbeitung, die Sie durchführen möchten („r“ zum Lesen aus der externen Anwendung).
  3. Verwenden Sie die zurückgegebene DATEI wie jede andere DATEI, um die Ausgabe des Befehls zu lesen.
  4. Rufen Sie pclose auf (), um den Stream zu schließen und zu warten, bis die Ausführung der externen Anwendung abgeschlossen ist.

Dieser Ansatz bietet eine effiziente Möglichkeit, Standardausgaben von einem System zu erfassen() Befehl und senden Sie ihn zur weiteren Verarbeitung an eine andere Funktion.

Das obige ist der detaillierte Inhalt vonWie kann ich stdout von einem „system()'-Befehl in C/C effizient erfassen?. 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