rename

RENAME(2)                         Systemaufrufe                        RENAME(2)



BEZEICHNUNG
       rename - ändert den Namen oder die Lage einer Datei

ÜBERSICHT
       #include <unistd.h>

       int rename(const char *oldpath, const char *newpath);

BESCHREIBUNG
       rename benennt eine Datei um, wobei sie gegebenenfalls in ein anderes
       Verzeichnis verlegt werden kann.

       Andere Hardlinks der Datei (angelegt mit link) bleiben davon unberührt.

       Wenn newpath schon existiert wird er überschrieben (für Ausnahmen siehe
       Abschnitt FEHLER), so daß kein anderer Prozes^ der versucht newpath zu
       erreichen, diesen nicht findet.

       Wenn newpath schon existiert aber das Umbenennen aus irgendeinem Grund
       fehlschlägt, oder das System crasht, garantiert rename das newpath
       vorhanden erhalten bleibt.

       Beim Ändern gibt es ein Zeitfenster zu dem sowohl oldpath als auch
       newpath auf die Datei zeigen die umbenannt werden soll.

       Wenn oldpath auf einen symbolischen Link zeigt wird der Link umbenannt;
       wenn newpath auf einen symbolischen Link zeigt wird der Link
       überschrieben.

RÜCKGABEWERT
       Bei Erfolg wird Null zurückgegeben.  Bei einem Fehler wird -1
       zurückgegeben und errno entsprechend gesetzt.

FEHLER
       EISDIR  newpath ist ein vorhandenes Directory aber oldpath ist kein
               vorhandenes Directory.

       EXDEV   oldpath und newpath befinden sich nicht im gleichen Filesystem.

       ENOTEMPTY
               newpath ist ein Directory das nicht leer ist.

       EBUSY   newpath ist ein vorhandenes Directory und ist aktuelles Directory
               oder Root Directory eines Prozesses.

       EINVAL  Es wurde versucht ein Directory als Subdiretory von sich selbst
               zu erzeugen.

       EMLINK  oldpath hat schon die maximale Anzahl Links, oder es ist ein
               Directory und das Directory welches newpath enthält hat schon die
               maximale Anzahl Links.

       ENOTDIR Ein Teil des Directory oldpath oder newpath ist in Wirklichkeit
               kein Directory.

       EFAULT  oldpath oder newpath zeigt außerhalb des Benutzer-Adressraums.

       EACCES  Die effektive uid des Prozesses hat kein Schreibrecht in dem
               Directory in dem oldpath oder newpath angelegt werden soll, oder
               eines der Directory's oldpath oder newpath verbietet das Suchen
               (execute permission fehlt), oder did not allow search (execute)
               permission, or oldpath ist ein Directory und hat keine
               Schreibberechtigung (wird zum Ändern des ..  benötigt).

       EPERM   Das Directory welches oldpath enthält hat das Sticky Bit gesetzt
               und die effektive Userid des Prozesses ist ungleich der Userid
               der Datei die gelöscht werden soll , oder das Dateisystem welches
               pathname enthält erlaubt nicht das Umbenenen einer Datei.

       ENAMETOOLONG
               oldpath oder newpath sind zu lang.

       ENOENT  Eine Komponente des Directory's oldpath  oder  newpath existiert
               nicht oder ist ein unsicherer symbolischer Link.

       ENOMEM  Es war nicht genügend Kernel-Memory verfügbar.

       EROFS   Die Datei ist in einem nur lesbaren Dateisystem.

       ELOOP   oldpath oder newpath beinhalten einen Verweis auf einen
               kreisenden symbolischen Link, beziehungsweise auf einen
               symbolischen Link der auf sich selbst verweist.

       ENOSPC  Die Gerätedatei die die Datei enthält hat keinen Platz für einen
               neuen Directoryeintrag.

KONFORM ZU
       POSIX, BSD 4.3, ANSI C

BUGS
       Momentan (Linux 0.99pl7) erlauben die meisten Dateisysteme außer Minix
       kein Überschreiben.  Sie erhalten beim Versuch EEXIST.

       Auf NFS Dateisystemen kann bei einer fehlgeschlagenen Operation nicht
       davon ausgegangen werden das die Datei nicht umbenannt wurde.  Wenn der
       Server die Datei umbenennt und dann crasht, gibt der RPC einen Fehler
       zurück.  Die Applikation muß dies berücksichtigen.  Siehe link(2) für ein
       ähnliches Problem.

SIEHE AUCH
       link(2), unlink(2), symlink(2), mv(1), link(8).




Linux                             29 März 1996                         RENAME(2)