Definition | #include <stdio.h> int rename(const char *old, const char *new); | |
Beschreibung |
Wenn sowohl old als auch new auf dieselbe existierende Datei verweisen, kehrt die Funktion Wenn old auf den Pfadnamen einer Datei zeigt, die kein Dateiverzeichnis ist, darf new nicht auf den Pfadnamen eines Dateiverzeichnisses zeigen. Wenn der Verweis existiert, der durch das Argument new angegeben wird, wird er entfernt und old wird in new umbenannt. In diesem Fall bleibt ein Verweis new während der umbenannten Operation sichtbar für andere Prozesse und bezieht sich auf die Datei, auf die sich entweder new oder old bezogen hat, bevor die Operation begann. Sowohl für das Dateiverzeichnis, das old enthält, als auch für das Dateiverzeichnis, das new enthält, wird das Schreibrecht benötigt. Wenn old auf den Pfadnamen eines Dateiverzeichnisses zeigt, dann darf new nicht auf den Pfadnamen einer Datei zeigen, die kein Dateiverzeichnis ist. Wenn das Dateiverzeichnis existiert, das durch new angegeben wird, dann wird es entfernt und old wird in new umbenannt. In diesem Fall existiert ein Verweis new während der umbenannten Operation und bezieht sich auf die Datei, auf die sich entweder new oder old bezogen hat, bevor die Operation begann. Wenn daher new ein existierendes Dateiverzeichnis angibt, muss dieses ein leeres Dateiverzeichnis sein. Der Pfadnamen-Anfang von new darf nicht identisch sein mit old. Das Schreibrecht wird sowohl für das Dateiverzeichnis, das old enthält, als auch für das Dateiverzeichnis, das new enthält, benötigt. Wenn old auf den Pfadnamen eines Dateiverzeichnisses zeigt, kann das Schreibrecht für das durch old angegebene Dateiverzeichnis benötigt werden und, falls es existiert, für das Dateiverzeichnis, das durch new angegeben wird. Wenn der Verweis existiert, der durch new angegeben wird, und der Verweiszähler der Datei durch das Entfernen dieser Datei gleich 0 wird und falls außerdem kein Prozess diese Datei geöffnet hat, wird der Platz freigegeben, der durch diese Datei belegt wird, und auf die Datei kann nicht länger zugegriffen werden. Falls einer oder mehrere Prozesse die Datei geöffnet haben, während der letzte Verweis entfernt wird, wird der Verweis entfernt, bevor Bei erfolgreicher Beendigung kennzeichnet BS2000 Die Funktion Wenn der Funktion | |
Returnwert | 0 | bei Erfolg. |
| -1 | bei Fehler, BS2000 Wenn old und new auf Dateien aus verschiedenen Dateisystemen zeigen, wird nichts verändert. |
Fehler |
| |
| Für eine Komponente eines Pfades existiert kein Suchrecht oder für eines der Dateiverzeichnisse, die old oder new enthalten, existiert kein Schreibrecht; oder das Schreibrecht für eines der Dateiverzeichnisse, auf die old oder new zeigen, wird benötigt, existiert aber nicht. | |
| Eines der Dateiverzeichnisse die durch old oder new angegeben werden, wird zurzeit durch das System oder einen anderen Prozess verwendet, und die Implementierung nimmt dies als einen Fehler an. | |
Erweiterung | ||
| Das Verzeichnis, in dem sich der Eintrag mit dem neuen Namen befindet, kann nicht erweitert werden, da der Benutzer die Anzahl der zulässigen Blöcke im Dateisystem, in dem sich das Verzeichnis befindet, überschritten hat. (Ende) | |
| ||
Der Verweis, der durch new angegeben wird, ist ein Dateiverzeichnis, das nicht leer ist. | ||
Erweiterung | ||
| old oder new zeigen außerhalb des allokierten Adressbereichs des Prozesses. | |
| Während der Ausführung des Systemaufrufs | |
| Der Dateiverzeichnis-Pfadname new enthält einen Pfadnamen-Anfang, der das Dateiverzeichnis old bezeichnet (siehe auch „Hinweis“). | |
Erweiterung | ||
| Beim Anlegen und Aktualisieren eines Verzeichniseintrags trat ein Ein-/Ausgabe-Fehler auf. (Ende) | |
| Das Argument new zeigt auf ein Dateiverzeichnis, und das Argument old zeigt auf eine Datei, die kein Dateiverzeichnis ist. | |
Erweiterung | ||
| Zu viele symbolische Verweise traten bei der Übersetzung von old oder new auf. (Ende) | |
BS2000 | ||
| Es existiert keine Datei mit dem Namen old | |
| old zeigt auf ein Dateiverzeichnis, und der Verweiszähler des Dateiverzeichnisses, das new übergeordneten ist, ist größer als | |
|
| |
Die Länge von old oder new überschreitet | ||
| Der Verweis, der durch old bezeichnet wird, existiert nicht, oder old bzw. new zeigt auf eine leere Zeichenkette. | |
| Das Dateiverzeichnis, das new enthalten würde, kann nicht erweitert werden. | |
| Eine Komponente des Pfades ist kein Dateiverzeichnis; oder das Argument old bezeichnet ein Dateiverzeichnis, und das Argument new bezeichnet eine Datei, die kein Dateiverzeichnis ist. | |
| Die angeforderte Operation fordert das Schreiben in ein Dateiverzeichnis, das sich in einem nur zum Lesen eingehängten Dateisystem befindet. | |
| Die durch new und old bezeichneten Verweise befinden sich in verschiedenen Dateisystemen. | |
Zusätzlich schlägt | ||
| Der Dateideskriptor oldfd oder newfd wurde nicht mit | |
| Der Parameter old spezifiziert keinen absoluten Pfadnamen und der Parameter oldfd hat weder den Wert | |
| Der Parameter old oder new spezifiziert keinen absoluten Pfadnamen und der entsprechende Dateideskriptor oldfd bzw. newfd ist nicht mit einem Dateiverzeichnis verbunden. | |
Hinweise | Mit
Ob | |
Siehe auch |
|