Re: Datei umbenennen während des Programmlaufs

From: Frank-Christian Kruegel <fchk_at_istda.com>
Date: Sun, 08 Apr 2007 11:31:43 +0200

On Sun, 8 Apr 2007 11:15:54 +0200, you wrote:

>Ich habe nun für diese spezielle Operation nach Laden des Hauptprogramm das
>Programm umbenannt (.bak angehängt). Das funktioniert auch bei mir: das
>Hauptprogramm läuft ohne Probleme weiter und die Clients können nicht mehr
>auf das Programm zugreifen.
>
>Meine Frage: ist das sicher? Funktioniert es bei mir nur, weil ich viel
>Arbeitsspeicher habe oder findet der Kernel auch das umbenannte Programm,
>wenn es einmal geladen ist.

Der Dateiname wird nur fürs open() gebraucht, dabei wird der zum Namen
passende inode gesucht, der für die weiteren Operationen benutzt wird. Wird
der Dateiname geändert, ändert sich der inode nicht, d.h. das handle bleibt
weiter gültig. Entfernst Du den Dateinamen, bleibt der inode solange
bestehen, bis das letzte handle geschlossen wird, d.h. auch bei eimen rm bzw
unlink() bleibt das handle bis zum close() gültig.

Die Trennung zwischen Directoryeintrag(Dateiname) und inode sorgt dafür, daß
das alles so funktioniert. Bei CPM und seinen Nachfahren (Dos, NT) gibt es
diese Trennung nicht.

Mit freundlichen Grüßen

Frank-Christian Krügel
Received on Sun Apr 08 2007 - 11:31:43 CEST

This archive was generated by hypermail 2.2.0 : Sun Apr 08 2007 - 11:31:59 CEST