SHARE.EXE was not loaded, or a shared region was locked



  • Hi,
    ich habe 'nen Backup-Programm geschrieben, was auf ziemlich rasante Art und Weise Dateien aus einem frei wählbaren Ordner in einen anderen ebenfalls frei wählbaren Ordner kopiert. Über das Netzwerk, dezentral und inkrementell. Ich arbeite mit einer rekursiven Funktion, die immer neue Threads erzeugt, um eine Fehlermeldung wegzubekommen, die da lautet: too many open files (erzeugt von

    _open
    

    ). Das hat auch geklappt.
    Jetzt habe ich aber die Fehlermeldung:
    SHARE.EXE was not loaded, or a shared region was locked.
    Wie komme ich jetzt weiter? Was bedeutet das überhaupt? share.exe brauchten doch nur DOS und Windows95?

    Danke schon im Voraus.



  • jensb444 schrieb:

    Ich arbeite mit einer rekursiven Funktion, die immer neue Threads erzeugt, um eine Fehlermeldung wegzubekommen, die da lautet: too many open files (erzeugt von

    _open
    

    ). Das hat auch geklappt.

    Vielleicht ist der Ansatz, dein System vollzumüllen, ganz einfach der falsche Weg - besser ist es, die Files wieder zu schließen, wenn du sie nicht mehr benötigst.



  • Die Fehlermeldung "too many open files" ist ja weg. Ich führe das auch auf die threads zurück. Das Grundgerüst der Funktion ist halt rekursiv, weil die Funktion sich für jeden neu gefundenen Ordner wieder selbst aufruft, und nur bei jeder gefundenen Datei dieselbe kopiert. Evtl. könnte man alle Kopiervorgänge (Dateien) auflisten und dann nacheinander ausführen!?
    🙄 🙄



  • Ja, da hast du den Teufel mit dem Belzebub ausgetrieben. Indem du einen neuen Thread eröffnet hast, hast du dir vielleicht ein paar zusätzliche File-Handles erkauft, aber überlastest auf Dauer dein System. Geh also besser einen Schritt zurück und überleg dir, ob du wirklich so viele offene Dateien auf einmal benötigst.


  • Mod

    Es muss grundsätzlich klar sein, dass die CRT nur 512 Streams (FILE's) gleichzeitig offen halten kann!



  • Ich hab' die Threads jetzt rausgenommen.
    Ich schreib alle zu kopierenden Dateien in eine Liste, und wenn alle dateien ermittelt sind, führe ich eine Funktion aus, die immer ein Kopiervorgang zur gleichen Zeit ausführt.
    Ich bekomme die Fehlermeldung aber immer noch. Danke für den Hinweis mit den 512 offenen Dateien.
    Daran kann es jetzt aber nicht mehr liegen.


  • Mod

    Du schliesst vermutlich die Dateien nicht, wie bereits vermutet wurde...



  • Jo, ich hab den Fehler gefunden,
    ich hab' tatsächlich an einer Stelle die Dateien nicht wieder geschlossen.
    Tja, was man aufmacht, sollte man auch wieder zu machen. Is' vermutlich auch so'ne Art Tao.
    Vielen Dank nochmal.
    Jens 🙂 🙂


Anmelden zum Antworten