Win32 Konsole auslesen ?
-
Ich bin mir sicher das diese Frage schon 485453 mal im Forum beantwortet ist, nur leider geht z.Z die Such Funktion nicht.
Nun zu meiner Frage:
Ich will eine alternative Konsole (cmd.exe) für Windows schreiben.
Die meisten Befehle werden an das OS via SYSTEM()
übergeben. So weit so gut. Jetzt muss aber der Output eines bestimmten Befehls wieder eingelesen werden z.b SYSTEM ("dir")Nur wie ?
Bin für jeden Hinweis dankbar !-Tscherno
-
Mein Tipp:
Versuche soviele system() zu vermeiden wie nur irgendwie möglich. Normalerweise besteht für jede "Standard"-Funktion der Konsole auch eine Funktion, die um vieles schneller und leichter zu bedienen ist als system().
Für DIR gibt es z. B. findfirst() und findnext(). Einfach mal bei msdn.microsoft.com eingeben ;).
-
Hi,
wenn du den Weg von AJ nicht gehen willst (auch wenn er empfehlenswert ist), kannst du die Ausgabe auch mit einem Pipe (>) umleiten. Beispiel:
dir C:\ > C:\dir.txt
Aus dieser Datei kannst du die Ausgebe dann mit den Stream-Operationen für Dateien wieder auslesen. Aber, wie gesagt, mach lieber das was AJ sagt, das ist wesentlich besser.
-
char c[256]=""; FILE *pipe; pipe = _popen("dir c:", "r"); while (fgets(c, MAX-1, pipe)) printf("%s",c);
-
@babelduo
Diese Variante ist auch nicht viel besser als system(). Es gibt so schöne einfache Funktionen, die genau das können, was man meistens mit system() aufruft.