.\" -*- 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 "19. August 2014" Linux Linux\-Programmierhandbuch .SH BEZEICHNUNG rename, renameat, renameat2 \- den Namen oder die Lage einer Datei ändern .SH ÜBERSICHT .nf \fB#include \fP .sp \fBint rename(const char *\fP\fIoldpath\fP\fB, const char *\fP\fInewpath\fP\fB);\fP .sp \fB#include \fP/* Definition der AT_*\-Konstanten */ \fB#include \fP .sp \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 \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 .sp .in -4n Mit Glibc erforderliche Makros (siehe \fBfeature_test_macros\fP(7)): .in .sp \fBrenameat\fP(): .PD 0 .ad l .RS 4 .TP 4 Seit Glibc 2.10: _XOPEN_SOURCE\ >=\ 700 || _POSIX_C_SOURCE\ >=\ 200809L .TP Bis 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. Falls \fInewpath\fP schon existiert, wird er in einem atomaren Schritt überschrieben (für Ausnahmen siehe der Abschnitt FEHLER), so dass ein anderer Prozess jederzeit auf \fInewpath\fP zugreifen kann. Falls \fIoldpath\fP und \fInewpath\fP bestehende Hard Links zu derselben Datei sind, tut \fBrename\fP() nichts und meldet eine erfolgreiche Ausführung. 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. \fIoldpath\fP kann ein Verzeichnis angeben. In diesem Fall darf \fInewpath\fP nicht existieren oder muss ein leeres Verzeichnis angeben. Allerdings gibt es beim Überschreiben wahrscheinlich ein Zeitfenster, zu dem sowohl \fIoldpath\fP als auch \fInewpath\fP auf die Datei zeigen, die umbenannt werden soll. 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. 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). 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()). Falls \fIoldpath\fP absolut ist wird \fIolddirfd\fP ignoriert. 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. 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(). Das Argument \fIflags\fP ist eine Bitmaske, die aus null oder mehr der folgenden Schalter besteht: .TP \fBRENAME_NOREPLACE\fP überschreibt \fInewpath\fP beim Umbenennen nicht. Ein Fehler wird zurückgegeben, wenn \fInewpath\fP bereits existiert. .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. .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 \(em es ist nichts falsch daran, die Umbenennung trotzdem durchzuführen\(em aber es ist erlaubt, \fBEBUSY\fP zurückzugeben, wenn das System solche Situationen nicht anderweitig verarbeiten kann.q) .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 Kernel\-Speicher 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 Benutzer\-ID des Prozesses ist weder die Benutzer\-ID 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 Benutzer\-ID des Prozesses ist weder die Benutzer\-ID 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 Es wurde ein ungültiger Schalter in \fIflags\fP angegeben oder sowohl \fBRENAME_NOREPLACE\fP als auch \fBRENAME_EXCHANGE\fP wurden 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. .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. .\" 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. \fBrenameat\fP(): POSIX.1\-2008. \fBrenameat2\fP() ist Linux\-spezifisch. .SH ANMERKUNGEN .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 3.74 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 \%http://www.kernel.org/doc/man\-pages/. .SH ÜBERSETZUNG Die deutsche Übersetzung dieser Handbuchseite wurde von Elmar Jansen , Helge Kreutzmann , Martin Eberhard Schauer 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 .