Lord_Brainbug
Grünschnabel
Hallo allerseits,
Das Problem:
Windows kann Datei 506 Durchläufe lang öffnen, aber im 507ten Durchlauf nicht mehr.
Ich arbeite an einem Optimierungsprogramm in C. Das Betriebssystem ist Windows 7, 64 Bit. Bevor ich den Code poste (der aktuell fast nur aus Einträgen zur Fehlerfindung besteht) wollte ich eine Allgemeine Frage stellen.
Ich habe eine for-Schleife, die von der Struktur her wie folgt aufgebaut ist:
- Berechne Werte mit externem Solver
- Öffne Ausgabe.txt und finde Werte die nicht passen; speichere dazugehörige Punkte in ein Array
- Schließe Ausgabe.txt
- Öffne die Eingabe.txt (hier stehen die Ausgangswerte: Punkte und Koordinaten)
- Lese Eingabedatei.txt Zeile für Zeile ein und kopiere in Eingabe2.txt
- Wenn in Eingabe.txt an einem Knoten angekommen der per Definition nicht passt, dann schreibe zufällige andere Koordinaten in Eingabe2.txt (Das zufällige folgt natürlich vorgegebenen Regeln)
- Schließe Eingabe.txt und Eingabe2.txt
- Lösche Eingabe.txt und benenne Eingabe2.txt in Eingabe.txt um
Dann fängt die Schleife wieder von vorne an. Zwischendurch gibt es ein paar Situationen, in denen die Schleife frühzeitig verlassen wird, aber die helfen hier (glaube ich) nicht weiter.
Getestet habe ich das ganze mit 500 Iterationen, hat super funktioniert. Je nach Einstellung waren die gewünschten Werte schon vorher erreicht und das Programm hat sich beendet oder wenn der gewünschte Optimum nicht erreicht wurde, gab es den dazugehörigen Text auf die Konsole aus.
Habe dann die Iterationen erhöht (auf 50000).
Jetzt bricht das Programm nach 506 Iterationen (in der 507ten) ab, da es die Eingabe.txt nicht öffnen kann.
Wenn ich das Programm sofort neu starte, ohne etwas an Eingabe und Ausgabe Dateien zu ändern, läufht es wieder 506 mal durch und kann beim 507ten Durchlauf die Eingabe.txt nicht mehr öffnen.
Also nun meine Frage:
Ist bei Windows die Anzahl an Dateien, die man in einem bestimmten Zeitraum öffnen kann, begrenzt?
Meine andere Idee war es, dass irgend ein Stack voll läuft, finde in meinem Programm dazu aber keinen Fehler.
Ich werde den Code posten, sobald dieser bereinigt ist. Ich denke es ist wenig hilfreich wenn ich hier 2000 Zeilen Code hinklatsche.
Schon mal vielen Dank für die Hilfe.
Das Problem:
Windows kann Datei 506 Durchläufe lang öffnen, aber im 507ten Durchlauf nicht mehr.
Ich arbeite an einem Optimierungsprogramm in C. Das Betriebssystem ist Windows 7, 64 Bit. Bevor ich den Code poste (der aktuell fast nur aus Einträgen zur Fehlerfindung besteht) wollte ich eine Allgemeine Frage stellen.
Ich habe eine for-Schleife, die von der Struktur her wie folgt aufgebaut ist:
- Berechne Werte mit externem Solver
- Öffne Ausgabe.txt und finde Werte die nicht passen; speichere dazugehörige Punkte in ein Array
- Schließe Ausgabe.txt
- Öffne die Eingabe.txt (hier stehen die Ausgangswerte: Punkte und Koordinaten)
- Lese Eingabedatei.txt Zeile für Zeile ein und kopiere in Eingabe2.txt
- Wenn in Eingabe.txt an einem Knoten angekommen der per Definition nicht passt, dann schreibe zufällige andere Koordinaten in Eingabe2.txt (Das zufällige folgt natürlich vorgegebenen Regeln)
- Schließe Eingabe.txt und Eingabe2.txt
- Lösche Eingabe.txt und benenne Eingabe2.txt in Eingabe.txt um
Dann fängt die Schleife wieder von vorne an. Zwischendurch gibt es ein paar Situationen, in denen die Schleife frühzeitig verlassen wird, aber die helfen hier (glaube ich) nicht weiter.
Getestet habe ich das ganze mit 500 Iterationen, hat super funktioniert. Je nach Einstellung waren die gewünschten Werte schon vorher erreicht und das Programm hat sich beendet oder wenn der gewünschte Optimum nicht erreicht wurde, gab es den dazugehörigen Text auf die Konsole aus.
Habe dann die Iterationen erhöht (auf 50000).
Jetzt bricht das Programm nach 506 Iterationen (in der 507ten) ab, da es die Eingabe.txt nicht öffnen kann.
Wenn ich das Programm sofort neu starte, ohne etwas an Eingabe und Ausgabe Dateien zu ändern, läufht es wieder 506 mal durch und kann beim 507ten Durchlauf die Eingabe.txt nicht mehr öffnen.
Also nun meine Frage:
Ist bei Windows die Anzahl an Dateien, die man in einem bestimmten Zeitraum öffnen kann, begrenzt?
Meine andere Idee war es, dass irgend ein Stack voll läuft, finde in meinem Programm dazu aber keinen Fehler.
Ich werde den Code posten, sobald dieser bereinigt ist. Ich denke es ist wenig hilfreich wenn ich hier 2000 Zeilen Code hinklatsche.
Schon mal vielen Dank für die Hilfe.