.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt; .\" and Copyright (C) 1993,1995 Ian Jackson .\" and Copyright (C) 2006, 2014 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\" Modified Sat Jul 24 00:35:52 1993 by Rik Faith .\" Modified Thu Jun 4 12:21:13 1998 by Andries Brouwer .\" Modified Thu Mar 3 09:49:35 2005 by Michael Haardt .\" 2007-03-25, mtk, added various text to DESCRIPTION. .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH RENAME 2 "15. September 2017" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG rename, renameat, renameat2 \- den Namen oder die Lage einer Datei ändern .SH ÜBERSICHT .nf \fB#include \fP .PP \fBint rename(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP \fB#include \fP/* Definition der AT_*\-Konstanten */ \fB#include \fP .PP \fBint renameat(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB);\fP .PP \fBint renameat2(int \fP\fIolddirfd\fP\fB, const char *\fP\fIoldpath\fP\fB,\fP \fB int \fP\fInewdirfd\fP\fB, const char *\fP\fInewpath\fP\fB, unsigned int \fP\fIflags\fP\fB);\fP .fi .PP \fIHinweis:\fP Es gibt keinen Glibc\-Wrapper für \fBrenameat2\fP(); siehe ANMERKUNGEN. .PP .in -4n Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .in .PP \fBrenameat\fP(): .PD 0 .ad l .RS 4 .TP 4 Seit Glibc 2.10: _POSIX_C_SOURCE\ >=\ 200809L .TP Vor Glibc 2.10: .\" FIXME . need to define FTMs for renameat2(), once it hits glibc _ATFILE_SOURCE .RE .ad .PD .SH BESCHREIBUNG \fBrename\fP() benennt eine Datei um und verschiebt sie in ein anderes Verzeichnis, wenn nötig. Alle anderen Hard Links (erstellt mittels \fBlink\fP(2)) sind nicht betroffen, ebenso offene Dateideskriptoren für \fIoldpath\fP. .PP Verschiedene Einschränkungen bestimmen, ob die Umbenennungsaktion erfolgreich ist oder nicht; siehe FEHLER unten. .PP Falls \fInewpath\fP schon existiert, wird er in einem atomaren Schritt überschrieben, so dass ein anderer Prozess jederzeit auf \fInewpath\fP zugreifen kann. Allerdings wird es wahrscheinlich ein Fenster geben, in dem sowohl \fIoldpath\fP als auch \fInewpath\fP sich auf die umzubenennende Datei beziehen. .PP Falls \fIoldpath\fP und \fInewpath\fP bestehende Hard Links zu derselben Datei sind, tut \fBrename\fP() nichts und meldet eine erfolgreiche Ausführung. .PP Wenn \fInewpath\fP schon existiert, aber das Umbenennen aus irgendeinem Grund fehlschlägt, garantiert \fBrename\fP(), dass \fInewpath\fP an Ort und Stelle erhalten bleibt. .PP \fIoldpath\fP kann ein Verzeichnis angeben. In diesem Fall darf \fInewpath\fP nicht existieren oder muss ein leeres Verzeichnis angeben. .PP Falls \fIoldpath\fP auf einen symbolischen Link zeigt, wird der Link umbenannt; falls \fInewpath\fP auf einen symbolischen Link zeigt, wird der Link überschrieben. .SS renameat() Der Systemaufruf \fBrenameat\fP() funktioniert genauso wie \fBrename\fP(), außer den hier beschriebenen Unterschieden. .PP Falls der in \fIoldpath\fP übergebene Pfadname relativ ist wird er als relativ zu dem im Dateideskriptor \fIolddirfd\fP referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei \fBrename\fP() für einen relativen Pfadnamen erfolgt). .PP Falls \fIoldpath\fP relativ ist und \fIolddirfd\fP den besonderen Wert \fBAT_FDCWD\fP annimmt wird \fIoldpath\fP als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie \fBrename\fP()). .PP Falls \fIoldpath\fP absolut ist wird \fIolddirfd\fP ignoriert. .PP Die Interpretation von \fInewpath\fP ist wie bei \fIoldpath\fP, außer dass ein relativer Pfadname als relativ zu dem Verzeichnis interpretiert wird, auf das der Dateideskriptor \fInewdirfd\fP verweist. .PP Lesen Sie \fBopenat\fP(2) für eine Beschreibung der Notwendigkeit von \fBrenameat\fP(). .SS renameat2() \fBrenameat2\fP() hat ein zusätzliches Argument \fIflags\fP. Ein Aufruf von \fBrenameat2\fP() mit einem leeren Argument \fIflags\fP ist äquivalent zu \fBrenameat\fP(). .PP Das Argument \fIflags\fP ist eine Bitmaske, die aus null oder mehr der folgenden Schalter besteht: .TP \fBRENAME_EXCHANGE\fP tauscht \fIoldpath\fP und \fInewpath\fP atomisch aus. Beide Pfadnamen müssen existieren, können aber verschiedenen Typs sein. Beispielsweise kann ein Pfad ein nicht\-leeres Verzeichnis und der andere ein symbolischer Link sein. .TP \fBRENAME_NOREPLACE\fP überschreibt \fInewpath\fP beim Umbenennen nicht. Ein Fehler wird zurückgegeben, wenn \fInewpath\fP bereits existiert. .IP \fBRENAME_NOREPLACE\fP kann nicht zusammen mit \fBRENAME_EXCHANGE\fP eingesetzt werden. .TP \fBRENAME_WHITEOUT\fP (seit Linux 3.18) .\" commit 0d7a855526dd672e114aff2ac22b60fc6f155b08 .\" commit 787fb6bc9682ec7c05fb5d9561b57100fbc1cc41 This operation makes sense only for overlay/union filesystem implementations. .IP Durch Angabe von \fBRENAME_WHITEOUT\fP wird ein »whiteout«\-Objekt bei der Quelle der Umbenennung zum gleichen Zeitpunkt der Durchführung der Umbenennung erzeugt. Die gesamte Aktion ist atomar, so dass der Whiteout erstellt sein wird, wenn die Umbenennung erfolgreich war. .IP A "whiteout" is an object that has special meaning in union/overlay filesystem constructs. In these constructs, multiple layers exist and only the top one is ever modified. A whiteout on an upper layer will effectively hide a matching file in the lower layer, making it appear as if the file didn't exist. .IP Wenn eine Datei auf einer unteren Ebene umbenannt wird, wird die Datei zuerst hochkopiert (falls sie nicht bereits auf der oberen Ebene ist) und dann auf der oberen, lese\-schreibbaren Ebene umbenannt. Gleichzeitig muss die Quelldatei »whiteouted« werden (so dass die Version der Quelldatei in der unteren Ebene unsichtbar gemacht wird). Die gesamte Aktion muss atomar sein. .IP When not part of a union/overlay, the whiteout appears as a character device with a {0,0} device number. .IP \fBRENAME_WHITEOUT\fP benötigt die gleichen Privilegien wie zum Erstellen eines Geräteknotens (d.h. die Capability \fBCAP_MKNOD\fP). .IP \fBRENAME_WHITEOUT\fP kann nicht zusammen mit \fBRENAME_EXCHANGE\fP eingesetzt werden. .IP .\" shmem: commit 46fdb794e3f52ef18b859ebc92f0a9d7db21c5df .\" ext4: commit cd808deced431b66b5fa4e5c193cb7ec0059eaff .\" XFS: commit 7dcf5c3e4527cfa2807567b00387cf2ed5e07f00 \fBRENAME_WHITEOUT\fP benötigt die Unterstützung vom darunterliegenden Dateisystem. Unter den Dateisystemen, die die Unterstützung anbieten, sind Shmem (seit Linux 3.18), Ext4 (seit Linux 3.18) und XFS (seit Linux 4.1). .SH RÜCKGABEWERT Bei Erfolg wird Null zurückgegeben. Bei einem Fehler wird \-1 zurückgegeben und \fIerrno\fP entsprechend gesetzt. .SH FEHLER .TP \fBEACCES\fP Für das Verzeichnis, das \fIoldpath\fP oder \fInewpath\fP enthält, wurden Schreibrechte verweigert oder für eines der Verzeichnisse im Pfad\-Präfix von \fIoldpath\fP oder \fInewpath\fP wurde nicht gestattet, dort zu suchen oder \fIoldpath\fP ist ein Verzeichnis und verwehrt die Schreiberlaubnis (benötigt, um den Eintrag \fI..\fP zu aktualisieren). (Siehe auch \fBpath_resolution\fP(7).) .TP \fBEBUSY\fP Das Umbenennen scheitert, weil \fIoldpath\fP oder \fInewpath\fP ein Verzeichnis ist, das von einem anderen Prozess (vielleicht als aktuelles Arbeitsverzeichnis oder als Root\-Verzeichnis oder weil es zum Lesen geöffnet ist) oder vom System genutzt wird (zum Beispiel als Einhängepunkt) und das System dies als Fehler betrachtet. (Beachten Sie, dass es keine Verpflichtung gibt, in solchen Fällen \fBEBUSY\fP zurückzugeben – es ist nichts falsch daran, die Umbenennung trotzdem durchzuführen – aber es ist erlaubt, \fBEBUSY\fP zurückzugeben, wenn das System solche Situationen nicht anderweitig verarbeiten kann.) .TP \fBEDQUOT\fP Das Quota (Plattenkontingent) des Benutzers an Plattenblöcken auf dem Dateisystem ist erschöpft. .TP \fBEFAULT\fP \fIalterpfad\fP oder \fIneuerpfad\fP zeigt aus dem für Sie zugänglichen Adressraum heraus. .TP \fBEINVAL\fP Der neue Pfadname enthielt ein Pfad\-Präfix des alten, oder allgemeiner, es wurde versucht, ein Verzeichnis als Unterverzeichnis von sich selbst zu erzeugen. .TP \fBEISDIR\fP \fInewpath\fP ist ein existierendes Verzeichnis, aber \fIoldpath\fP ist kein Verzeichnis. .TP \fBELOOP\fP Bei der Auflösung von \fIoldpath\fP oder \fInewpath\fP wurden zu viele symbolische Links gefunden. .TP \fBEMLINK\fP \fIoldpath\fP hat schon die maximale Anzahl Links, oder es war ein Verzeichnis und das Verzeichnis, welches \fInewpath\fP enthält, hat schon die maximale Anzahl Links. .TP \fBENAMETOOLONG\fP \fIoldpath\fP oder \fInewpath\fP war zu lang. .TP \fBENOENT\fP Der von \fIoldpath\fP angegebene Link existiert nicht oder eine Verzeichniskomponente von \fInewpath\fP existiert nicht oder \fIoldpath\fP oder \fInewpath\fP ist eine leere Zeichenkette. .TP \fBENOMEM\fP Es war nicht genügend Kernelspeicher verfügbar. .TP \fBENOSPC\fP Das Gerät, das die die Datei enthält, hat keinen Platz für einen neuen Verzeichniseintrag. .TP \fBENOTDIR\fP Eine als Verzeichnis benutzte Komponente von \fIoldpath\fP oder \fInewpath\fP ist in der Tat kein Verzeichnis. Oder \fIoldpath\fP ist ein Verzeichnis und \fInewpath\fP existiert, ist aber kein Verzeichnis. .TP \fBENOTEMPTY\fP oder \fBEEXIST\fP \fInewpath\fP ist ein nicht leeres Verzeichnis, d.h. es enthält außer ».« und »..« weitere Einträge. .TP \fBEPERM\fP oder \fBEACCES\fP Das Verzeichnis, das \fIoldpath\fP enthält, hat das Sticky\-Bit (\fBS_ISVTX\fP) gesetzt und die effektive Benutzerkennung des Prozesses ist weder die Benutzerkennung der zu löschenden Datei noch die des beinhaltenden Verzeichnisses und der Prozess ist nicht privilegiert (Linux: verfügt nicht über die \fBCAP_FOWNER\fP\-Capability); oder \fInewpath\fP ist eine vorhandene Datei und ihr übergeordnetes Verzeichnis hat das Sticky\-Bit gesetzt und die effektive Benutzerkennung des Prozesses ist weder die Benutzerkennung der zu ersetzenden Datei noch des beherbergenden Verzeichnisses und der Prozess ist nicht privilegiert (Linux: verfügt nicht über die \fBCAP_FOWNER\fP\-Capability) oder das \fIpathname\fP beherbergende Dateisystem unterstützt nicht die Umbenennung des angeforderten Typs. .TP \fBEROFS\fP Die Datei befindet sich auf einem nur lesbaren Dateisystem. .TP \fBEXDEV\fP \fIoldpath\fP und \fInewpath\fP befinden sich nicht auf demselben eingehängten Dateisystem. (Linux erlaubt es Dateisystemen, an mehreren Stellen eingehängt zu sein, aber \fBrename\fP() funktioniert nicht über verschiedene Einhängepunkte hinweg, selbst falls dasselbe Dateisystem an beiden Stellen eingehängt ist.) .PP Die folgenden zusätzlichen Fehler können bei \fBrenameat\fP() und \fBrenameat2\fP() auftreten: .TP \fBEBADF\fP \fIolddirfd\fP oder \fInewdirfd\fP ist kein zulässiger Dateideskriptor. .TP \fBENOTDIR\fP \fIoldpath\fP ist relativ und \fIolddirfd\fP ist ein Dateideskriptor, der sich auf eine Datei bezieht, die kein Verzeichnis ist; gilt analog für \fInewpath\fP and \fInewdirfd\fP. .PP Die folgenden zusätzlichen Fehler können bei \fBrenameat2\fP() auftreten: .TP \fBEEXIST\fP \fIflags\fP enthält \fBRENAME_NOREPLACE\fP und \fInewpath\fP existiert bereits. .TP \fBEINVAL\fP In \fIflags\fP wurde ein ungültiger Schalter angegeben. .TP \fBEINVAL\fP Sowohl \fBRENAME_NOREPLACE\fP als auch \fBRENAME_EXCHANGE\fP wurden in \fIflags\fP angegeben. .TP \fBEINVAL\fP Sowohl \fBRENAME_WHITEOUT\fP als auch \fBRENAME_EXCHANGE\fP wurden in \fIflags\fP angegeben. .TP \fBEINVAL\fP Das Dateisystem unterstützt einen der Schalter in \fIflags\fP nicht. .TP \fBENOENT\fP \fIflags\fP enthält \fBRENAME_EXCHANGE\fP und \fInewpath\fP existiert nicht. .TP \fBEPERM\fP \fBRENAME_WHITEOUT\fP wurde in \fIflags\fP festgelegt, aber der Aufrufende verfügte nicht über die Capability \fBCAP_MKNOD\fP. .SH VERSIONEN \fBrenameat\fP() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in Version 2.4 hinzugefügt. .PP .\" FIXME . glibc support is pending. \fBrenameat2\fP() wurde zu Linux in Kernel 3.15 hinzugefügt. .SH "KONFORM ZU" \fBrename\fP(): 4.3BSD, C89, C99, POSIX.1\-2001, POSIX.1\-2008. .PP \fBrenameat\fP(): POSIX.1\-2008. .PP \fBrenameat2\fP() ist Linux\-spezifisch. .SH ANMERKUNGEN .\" Glibc stellt keinen Wrapper für den Systemaufruf \fBrenameat2\fP() bereit; rufen Sie ihn mittels \fBsyscall\fP(2) auf. .SS "Anmerkungen zur Glibc" Mit älteren Kerneln, wenn \fBrenameat\fP() nicht verfügbar ist, weicht die Glibc\-Wrapper\-Funktion auf \fBrename\fP() aus. Wenn \fIoldpath\fP und \fInewpath\fP relative Pfadnamen sind, konstruiert die Glibc Pfadnamen auf Basis der symbolischen Links in \fI/proc/self/fd\fP, die den Argumenten \fIolddirfd\fP und \fInewdirfd\fP entsprechen. .SH FEHLER Auf NFS\-Dateisystemen kann bei einer fehlgeschlagenen Operation nicht davon ausgegangen werden, dass die Datei nicht umbenannt wurde. Falls der Server die Datei umbenennt und dann abstürzt, gibt der erneut übertragene RPC, der nach dem Wiederanlaufen des Servers verarbeitet wird, einen Fehler zurück. Von der Anwendung wird erwartet, dies zu berücksichtigen. Siehe \fIlink\fP(2) für ein ähnliches Problem. .SH "SIEHE AUCH" \fBmv\fP(1), \fBchmod\fP(2), \fBlink\fP(2), \fBsymlink\fP(2), \fBunlink\fP(2), \fBpath_resolution\fP(7), \fBsymlink\fP(7) .SH KOLOPHON Diese Seite ist Teil der Veröffentlichung 4.16 des Projekts Linux\-\fIman\-pages\fP. Eine Beschreibung des Projekts, Informationen, wie Fehler gemeldet werden können sowie die aktuelle Version dieser Seite finden sich unter \%https://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Elmar Jansen , Martin Eberhard Schauer , Helge Kreutzmann und Mario Blättermann erstellt. Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General Public License Version 3 oder neuer bezüglich der Copyright-Bedingungen. Es wird KEINE HAFTUNG übernommen. Wenn Sie Fehler in der Übersetzung dieser Handbuchseite finden, schicken Sie bitte eine E-Mail an .