Provided by:
manpages-de-dev_0.5-4.1ubuntu1_all 
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 dass kein anderer Prozess, 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 muss dies berücksichtigen. Siehe link(2) für
ein ähnliches Problem.
SIEHE AUCH
link(2), unlink(2), symlink(2), mv(1), link(8).