Kein fstat() unter Windows?
-
Habe jetzt folgende Code-Zeile getestet, jedoch hat das nichts geändert:
_fstati64(_fileno(fp), &filestats);
-
hmmm, na sowas. und wenn du dir das handle mit _open holst?
-
oder vielleicht noch checken, ob da ein ferror(fp) drauf ist oder ein eof(fp)
-
Habs gerade ausprobiert, ein
_fstat ( fp->_file, &stat );
funzt bei mir ohne Probleme.
-
Am Filehandle liegt es jedenfalls nicht. Aber wie gesagt, in MinGW (Dev-CPP) und MSVC zeigt FileMon einen Buffer Overflow an.
Hat noch jemand eine Idee?
-
vermulich wurde schon an anderer stelle über die puffergrenzen hinaus geschrieben, sodass dieser _fstat aufruf der auslöser fürs 'bemerken' war. diesen fall hat man manchmal auch beim debuggen.
-
Ich habe ein kleines Testprogramm geschrieben, welches nur eine Datei öffnet, fstat ausführt, die Datei wieder schließt und die Größe ausgibt - doch auch hier der bekannte Fehler.
-
Bei mir geht dieses example hier nicht:
#include <cstdio> #include <sys/stat.h> using namespace std; int main() { FILE* fp = fopen("test.txt", "r+b"); struct _stati64 filestats; _fstati64(_fileno(fp), &filestats); printf("size: %ld\n",filestats.st_size); fclose(fp); }
Also es wird zwar ausgeführt, aber FileMon zeigt einen Buffer Overflow an!
@Big Brother: Könntest Du das bitte mal übersetzen und dann mit FileMon capturen?Kann uns bitte jemand helfen? Wer kennt Bugs bei fstat()??
-
Unter MinGW 4.3.2 funktioniert:
http://publib.boulder.ibm.com/iseries/v5r1/ic2924/index.htm?info/apis/fstat.htmDie Beispiele aus der MSDN funktionieren unter dem 4.3.2 nicht.
Die MSDN hat verschiedene Beispiele für 2005 und 2008.MfG f.-th.
-
hier noch ein Link:
http://pronix.linuxdelta.de/C/standard_C/c_programmierung_20.shtml
Obwohl da Linux steht haben die auch weitere InfosMfG f.-th.