pipe, stream auslesen
-
folgenden code habe ich unter der windows console verwendet um durch eine pipe ein kommando auszuführen und den stream auszulesen:
FILE *ret; char buf [1024], c_ret [1000000]; ... ret = _popen(buf,"rt"); strcpy (c_ret, ""); while(!feof(ret)) { fgets (line, 1000 , ret); strncat (c_ret, line, strlen(line)); } ...
bei der umsetzung in eine windows umgebung tritt nun folgendes problem auf:
die funktion fgets () ruft einen schweren fehler durch speicherzugriff an der speicheraddresse 0x0000000c hervor
-
hast du line mit einer größe initialisiert ???
-
char line [1000]; strcpy (line ,"");
-
weiss das denn keiner?
-
Du solltest erstmal prüfen, ob die Datei erfolgreich geöffnet wurde.
Sonst hantierst du mit einem Nullpointer, mit den dir nun bekannten Folgen.
-
stimmt, das öffnen schlägt fehl und FILE* ist ein NULL-pointer ... nur warum funktioniert der gleiche code unter console und unter windows nicht?