[quote=RPerl,07.06.2007, 18:48]Ja, Stichwort Race-Condition. Aber weil es kein richtiges Rechtesystem gibt bei Windows, ist es noetig, dass man z. B. spezielle DLLs nicht loeschen kann, weil der prozess darauf zugreift. Wenn man das koennte, koennte man u.U. das System crashen.[/quote]
So, wie es bei den Unices, die ich kenne, gelöst ist, gibt es keine Probleme, wenn man einem Prozess irgendwelche dynamischen Bibliotheken "unter dem Hintern weglöscht". Da der dynamische Linker die Bibliotheken noch geöffnet hat, funktioniert das Programm problemlos weiter, bis es beendet wird -- erst dann verschwinden die Daten der Bibliotheken aus dem Dateisystem.
Dass man natürlich keine neuen Programme mehr starten kann, wenn man meinetwegen die C-Laufzeitbibliothek löscht, ist klar. Das gleiche Problem bekommt man aber unter jedem System, wenn man wichtige Bibliotheken löscht. Nur unter Unix laufen wenigstens alle Programme die noch im Speicher sind weiter.
Praktisch ist dieses Verhalten zum Beispiel dann, wenn man Bibliotheken durch aktualisierte binärkompatible Versionen ersetzen will -- dazu muss man dann nämlich keine laufenden Programme beenden oder gar neu booten, wie das bei Windows so oft der Fall ist.
Außerdem kann man bei Windows problemlos auch verwendete Bibliotheken löschen, indem man sie zuerst entläd. Ein altes Kompatibilitätsfeature, das wirklich maximal unsicher designt ist, erlaubt es nämlich beliebige Bibliotheken auch fremder Prozesse aus dem Speicher zu kicken...
When C++ is your hammer, every problem looks like your thumb.