Standardausgabe von einem system()-Befehl effektiv erfassen
Bei Verwendung der system()-Funktion zum Starten einer externen Anwendung, z. B. „ls "kann es wünschenswert sein, die Ausgabe zur weiteren Verarbeitung in Echtzeit zu erfassen. Um dies in C/C zu erreichen, sollten Sie den folgenden optimalen Ansatz in Betracht ziehen:
Die Funktionen popen() und pclose(), wie im Popen-Handbuch dokumentiert, bieten einen robusten Mechanismus zum Erfassen von stdout/stderr von externen Befehlen. Hier ist ein Codebeispiel:
#include <stdio.h> FILE *fp; char buffer[1024]; fp = popen("ls", "r"); while (fgets(buffer, sizeof(buffer), fp) != NULL) { // Process the stdout line } pclose(fp);
Dieses Codefragment öffnet eine Pipe zum Befehl „ls“, durchläuft jede Ausgabezeile und sendet sie zur weiteren Verarbeitung. Sobald der externe Befehl abgeschlossen ist, schließt pclose() die Pipe und gibt Ressourcen frei.
Durch den Einsatz dieser Technik können Sie stdout effektiv aus Ihren externen Anwendungen erfassen und so eine nahtlose Integration mit Ihrem C/C-Code gewährleisten.
Das obige ist der detaillierte Inhalt vonWie kann ich stdout von einem „system()'-Befehl in C/C effektiv erfassen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!