Beim zyclischen lesen einer Datei, bricht "open" mit Fehler ab
-
Hallo,
ich habe ein sonderbares Problem. Wenn ich zyclisch den Dateinamen in der Variable "datenpunktliste" öffne läuft dies ca. 10 Minuten. Danach gibt "open" einen Fehler zurück und das Programm wird beendet.
Die zu lesende Datei wird beim testen nicht verändert oder gelöscht.
Der Fehlertext durch "printf usw." in dem auch der Dateinamen angegeben wird zeigt den richtigen Dateinamen/Pfad an.if ((fp = fopen(datenpunktliste, "r")) == NULL) { /* ERROR */ ; printf ("parameter-Datei \"%s\" konnte zum lesen fuer die Schnittstelle nicht geoeffnet werden\n" , datenpunktliste); fflush(stdout); return -1; }
Mir ist es unerklärlich warum das nicht geht...hat irgend jemand eine Idee ?
Danke
worst_case
-
Mit perror siehst du, was überhaupt für ein Fehler auftritt.
-
Hallo,
hier habe ich leider noch nicht gearbeitet. Auch in meinem schlauen Buch finde ich mich mit der Erklärung nicht zurecht.
Bitte um einen zweizeiler.Danke
worst_case
-
perror() ist eine Funktion.
Wenn fopen fehl schlägt, rufst du perror("") auf für eine genauere Fehlermeldung.
-
http://www.mkssoftware.com/docs/man3/perror.3.asp
Die meisten Syscalls setzen beim Fehler eine globale Variable errno
Diese beinhaltet die Nummer des Fehlers, der tatsächlich aufgetretten ist.
perror() - ist in der lage diese Variable zu interpretieren.
Ich glaube#include <errno.h> ... if ((fp = fopen(datenpunktliste, "r")) == NULL) { /* ERROR */ ; perror("Datei konnte nicht geoeffnet werden"); fflush(stdout); return -1; }
-
Abend,
Fehlermeldung "too many open files".
Irgendwo fehlt ein "fclose", denn normal ist das nicht das ich in meinem Programm die maximale Anzahl offener Dateien überschreite.
Ich habe schon mal kontrolliert, finde aber nichts.
Gibt es nicht irgendein Hilfsmittel um das zu erkennen ?Danke
worst_case
-
Hallo,
Fehler gefunden. Ein "return" ohne "fclose", und das hat sich mit der Zeit summiert.
Danke
worst_case