Museum

Home

Lab Overview

Retrotechnology Articles

Online Manuals

⇒ rename(2) — Reliant UNIX 5.44c4

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

link(2)

rmdir(2)

symlink(2)

unlink(2)

stdio(5)

rename(2)                                                         rename(2)

NAME
     rename - Dateinamen ändern

SYNTAX
     #include <stdio.h>

     int rename(const char *old, const char *new);

BESCHREIBUNG
     Die Funktion rename() ändert den Namen einer Datei. Das Argument old
     zeigt auf den Pfadnamen der Datei, die umbenannt werden soll. Das
     Argument new zeigt auf den neuen Pfadnamen der Datei.

     Wenn sowohl das Argument old als auch das Argument new auf dieselbe
     vorhandene Datei verweisen und einen Link zu dieser herstellen, wird
     rename() erfolgreich beendet, und es werden keine weiteren Aktionen
     durchgeführt.

     Wenn das Argument old auf den Pfadnamen einer Datei zeigt, die kein
     Verzeichnis ist, darf das Argument new nicht auf den Pfadnamen für ein
     Verzeichnis zeigen. Wenn der durch das Argument new angegebene Link
     existiert, wird er entfernt und old in new umbenannt. In diesem Fall
     bleibt ein Link mit dem Namen new für andere Prozesse während der
     gesamten Umbenennungsoperation sichtbar und verweist entweder auf die
     Datei, die durch new oder old vor Beginn der Operation angegeben
     wurde. Sowohl für das Verzeichnis, das old enthält, als auch für das
     Verzeichnis, das new enthält, ist Schreibzugriff erforderlich.

     Wenn das Argument old auf den Pfadnamen eines Verzeichnisses zeigt,
     darf das Argument new nicht auf den Pfadnamen für eine Datei zeigen,
     die kein Verzeichnis ist. Wenn das durch das Argument new angegebene
     Verzeichnis existiert, wird es entfernt und old in new umbenannt. In
     diesem Fall bleibt ein Link mit dem Namen new für andere Prozesse wäh-
     rend der gesamten Umbenennungsoperation sichtbar und verweist entweder
     auf die Datei, die durch new oder old vor Beginn der Operation angege-
     ben wurde. Wenn new hierbei ein vorhandenes Verzeichnis angibt, muß
     dieses Verzeichnis daher leer sein.

     Wenn old auf einen Pfadnamen zeigt, der einen sybolischen Link angibt,
     wird der symbolische Link umbenannt. Wenn new auf einen Pfadnamen
     zeigt, der einen symbolischen Link angibt, wird der symbolische Link
     entfernt.

     Der Pfadname new darf kein Pfadpräfix enthalten, das old angibt. Für
     das Verzeichnis, das old enthält, und das Verzeichnis, das new ent-
     hält, ist jeweils Schreibzugriff erforderlich. Wenn das Argument old
     auf den Pfadnamen eines Verzeichnisses zeigt, kann für das durch old
     angegebene Verzeichnis und, falls vorhanden, für das durch new angege-
     bene Verzeichnis Schreibzugriff erforderlich sein.






Seite 1                      Reliant UNIX 5.44               Gedruckt 11/98

rename(2)                                                         rename(2)

     Wenn der durch das Argument new angegebene Link existiert, und der
     Link-Zähler beim Entfernen des Links auf 0 gesetzt wird, und wenn die
     Datei durch keinen Prozeß geöffnet ist, wird der durch die Datei
     belegte Speicherplatz freigegeben und auf die Datei kann nicht mehr
     zugegriffen werden. Ist die Datei durch einen oder mehrere Prozesse
     geöffnet wenn der letzte Link entfernt wird, wird der Link vor der
     Rückkehr von rename() entfernt. Das Löschen des Dateiinhalts wird
     jedoch so lange zurückgestellt, bis alle Verweise auf die Datei
     geschlossen sind.

     Nach erfolgreicher Ausführung kennzeichnet rename() die Felder
     stctime und stmtime des Elternverzeichnisses jeder Datei zur Aktua-
     lisierung.

FEHLER
     Die folgenden Beschreibungen der Fehlercodes sind funktionsspezifisch.
     Eine allgemeingültige Beschreibung finden Sie in introprm2(2) bzw. in
     errno(5).

     rename() schlägt fehl, old wird nicht geändert und die Datei new nicht
     erzeugt, wenn eine oder mehrere der folgenden Bedingungen gegeben
     sind:

     EACCES        Für eine Komponente eines Pfadpräfixes besteht keine
                   Suchberechtigung; für eines der Verzeichnisse, die die
                   Dateien old und new enthalten, besteht keine Schreibbe-
                   rechtigung, oder für eines der Verzeichnisse, auf die
                   old und new zeigen, existiert keine Schreibberechtigung.

     EBUSY         Das durch old oder new angegebene Verzeichnis wird der-
                   zeit vom System oder von einem anderen Prozeß verwendet
                   und die Implementierung sieht dies als Fehler an, oder
                   bei der durch old oder new angegebenen Datei handelt es
                   sich um einen Stream.

     EDQUOT        Das Verzeichnis, in dem sich der Eintrag für den neuen
                   Namen befindet, kann nicht erweitert werden, da der
                   Benutzer die Anzahl der zulässigen Blöcke in dem Datei-
                   system, in dem sich das Verzeichnis befindet, über-
                   schritten hat.

     EEXIST oder ENOTEMPTY
                   Der von new genannte Link ist ein Verzeichnis, welches
                   andere Einträge als "." und ".." enthält.

     EFAULT        old oder new zeigen über den zugewiesenen Adreßbereich
                   des Prozesses hinaus.

     EINVAL        old ist ein übergeordnetes Verzeichnis von new, oder es
                   wurde versucht, "." oder ".." umzubenennen.




Seite 2                      Reliant UNIX 5.44               Gedruckt 11/98

rename(2)                                                         rename(2)

     EINTR         Während der Ausführung des Systemaufrufs rename() wurde
                   ein Signal empfangen.

     EIO           Beim Anlegen und Aktualisieren eines Verzeichniseintrags
                   ist ein Ein-/Ausgabefehler aufgetreten.

     EISDIR        new zeigt auf ein Verzeichnis, und old zeigt auf eine
                   Datei, die kein Verzeichnis ist.

     EMLINK        old zeigt auf ein Dateiverzeichnis, und der Link-Zähler
                   des Verzeichnisses, das new übergeordnet ist, ist größer
                   als LINKMAX.

     ELOOP         Bei der Auflösung von old oder new sind zu viele symbo-
                   lische Links aufgetreten.

     EMULTIHOP     Komponenten der Pfadnamen erfordern den Sprung auf meh-
                   rere ferne Rechner, und die Dateisystemtypen erlauben
                   dies nicht.

     ENAMETOOLONG  Die Länge des Arguments old oder new überschreitet
                   PATHMAX, oder die Länge einer Komponente von old oder
                   new überschreitet NAMEMAX.

     ENOENT        Eine Komponente von old oder new existiert nicht, oder
                   die Datei, auf die verwiesen wird, existiert nicht.

     ENOLINK       Pfadnamen zeigen auf einen fernen Rechner, und der Link
                   auf diesen Rechner ist nicht mehr aktiv.

     ENOSPC        Im Verzeichnis, welches new enthalten soll, ist kein
                   Speicher mehr verfügbar.

     ENOTDIR       Eine Komponente eines Pfadpräfixes ist kein Verzeichnis;
                   oder der Parameter old benennt ein Verzeichnis und der
                   Parameter new benennt eine Datei.

     EPERM oder EACCES
                   Das Flag SISVTX ist in dem Verzeichnis gesetzt, das die
                   Datei enthält, auf die old verweist, und der Aufrufende
                   ist weder der Eigentümer der Datei noch des Verzeichnis-
                   ses und verfügt nicht über die entsprechenden Berechti-
                   gungen; oder new verweist auf eine vorhandene Datei, das
                   Flag SISVTX ist in dem Verzeichnis gesetzt, das diese
                   Datei enthält, und der Aufrufende ist weder der Eigentü-
                   mer der Datei noch des Verzeichnisses und verfügt nicht
                   über die entsprechenden Berechtigungen.

     EROFS         Die angeforderte Operation erfordert das Schreiben in
                   ein Verzeichnis eines Dateisystems, das nur gelesen wer-
                   den kann.



Seite 3                      Reliant UNIX 5.44               Gedruckt 11/98

rename(2)                                                         rename(2)

     EXDEV         Die von old und new genannten Links befinden sich auf
                   verschiedenen Dateisystemen.

     Die Funktion rename() kann bei folgenden Bedingungen fehlschlagen:

     ENAMETOOLONG  Die Auflösung des Pfadnamens eines symbolischen Links
                   hat ein Zwischenergebnis erzeugt, dessen Länge PATHMAX
                   überschreitet.

     ETXTBSY       Die Datei, die umbenannt werden soll, ist eine reine
                   Prozedurdatei (gemeinsam verwendete Textdatei), die aus-
                   geführt wird.

ERGEBNIS
     Nach erfolgreicher Ausführung wird 0 zurückgegeben. Andernfalls wird
     -1 zurückgeliefert, errno gesetzt, und weder old noch new werden ver-
     ändert oder erstellt.

HINWEISE
     Das System kann einen Deadlock (gegenseitige Sperre) erzeugen, wenn es
     eine Schleife im Dateisystemgraphen gibt. Solch eine Schleife tritt
     auf, wenn ein Eintrag im Verzeichnis a, z. B. a/foo, ein "Hard Link"
     auf das Verzeichnis b ist, und ein Eintrag im Verzeichnis b, z. B.
     b/bar, ein Hard Link auf das Verzeichnis a ist. Wenn solch eine
     Schleife existiert und zwei getrennte Prozesse versuchen, ein rename
     a/foo b/bar und rename b/bar a/foo auszuführen, kann das System einen
     Deadlock erzeugen, weil versucht wird, beide Verzeichnisse zum Ändern
     zu sperren. Der Systemverwalter sollte Hard Links auf Verzeichnisse
     durch symbolische Links ersetzen.

SIEHE AUCH
     link(2), rmdir(2), symlink(2), unlink(2), stdio(5).






















Seite 4                      Reliant UNIX 5.44               Gedruckt 11/98

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026