Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

mkdir, mkdirat - Dateiverzeichnis erzeugen

&pagelevel(4)&pagelevel

Definition

#include <sys/stat.h>

Optional
#include <sys/types.h> (Ende)

int mkdir(const char *path, mode_t mode);
int mkdirat(int fd, const char *path, mode_t mode);

Beschreibung

mkdir() erstellt ein neues Dateiverzeichnis mit dem Namen path. Der Modus des neuen Dateiverzeichnisses wird mit mode (siehe chmod() für mögliche Werte für Modus) initialisiert. Der Schutzbitteil von mode wird durch die Dateimaske des Prozesses verändert (siehe umask()).

Die Eigentümernummer des Verzeichnisses wird auf die effektive Benutzernummer des Prozesses gesetzt. Die Gruppennummer des Verzeichnisses wird auf die effektive Gruppennummer des Prozesses gesetzt, oder die Gruppennummer dieses Verzeichnisses wird geerbt, wenn das Bit S_ISGID im übergeordneten Verzeichnis gesetzt ist. Das Bit S_ISGID des neuen Verzeichnisses wird vom übergeordneten Verzeichnis übernommen.

Wenn path ein symbolischer Verweis ist, wird er nicht verwendet.

Das neu erzeugte Verzeichnis ist mit Ausnahme der Einträge für sich selbst und sein übergeordnetes Verzeichnis leer.

Nach erfolgreicher Beendigung kennzeichnet mkdir() die Felder st_atime, st_ctime und st_mtime des Verzeichnisses zur Aktualisierung. Auch die Felder st_ctime und st_mtime des Dateiverzeichnisses, das den neuen Eintrag enthält, werden zur Aktualisierung gekennzeichnet.

Die Funktion mkdirat() ist äquivalent zu der Funktion mkdir(), außer wenn der Parameter path einen relativen Pfad spezifiziert. In diesem Fall wird das neue Dateiverzeichnis nicht im aktuellen Dateiverzeichnis, sondern in dem mit dem Dateideskriptor fd verbundenen Dateiverzeichnis erstellt. Wurde der Dateideskriptor ohne O_SEARCH geöffnet, prüft die Funktionen, ob eine Suche im verbundenen Dateiverzeichnis mit den dem Dateiverzeichnis zugrunde liegenden Berechtigungen erlaubt ist. Wurde der Dateideskriptor mit O_SEARCH geöffnet, unterbleibt die Prüfung.

Wenn der Funktion mkdirat() für den Parameter fd der Wert AT_FDCWD übergeben wurde, wird das aktuelle Dateiverzeichnis benutzt.

Returnwert

0

bei Erfolg.

 

-1

bei Fehler. Es wird kein Dateiverzeichnis erzeugt und errno wird gesetzt, um den Fehler anzuzeigen.

Fehler

mkdir() und mkdirat() schlagen fehl, wenn gilt:

 

EACCES

Entweder besteht für eine Komponente des Pfades kein Suchrecht, oder es besteht kein Schreibrecht für das dem neuen Dateiverzeichnis übergeordnete Verzeichnis.

 

EEXIST

Die angegebene Datei ist bereits vorhanden.


Erweiterung

 

EFAULT

path weist über den zugewiesenen Adressraum des Prozesses hinaus.

 

EIO

Während des Zugriffs auf das Dateisystem ist ein Ein-/Ausgabefehler aufgetreten.

 

ELOOP

Bei der Übersetzung von path wurden zuviele symbolische Verweise angetroffen. (Ende)

 

EMLINK

Die Höchstzahl {LINK_MAX} von Verweisen im übergeordneten Dateiverzeichnis wurde überschritten.


ENAMETOOLONG

 

Die Länge des Arguments path überschreitet {PATH_MAX}, oder die Länge einer Komponente von path überschreitet {NAME_MAX}.

 

ENOENT

Eine Komponente des Pfades ist nicht vorhanden, oder path zeigt auf eine leere Zeichenkette.


Erweiterung 

 

ENOLINK

path weist auf einen fernen Rechner, und die Verbindung zu diesem Rechner ist nicht mehr aktiv. (Ende)

 

ENOSPC

Auf dem Gerät, das das Verzeichnis enthält, ist kein freier Platz verfügbar.

 

ENOTDIR

Eine Pfadkomponente ist kein Verzeichnis.

 

EROFS

Die angegebene Datei steht in einem schreibgeschützten Dateisystem.


Zusätzlich schlägt mkdirat() fehl, wenn gilt: 

 

EACCES

Der Dateideskriptor fd wurde nicht mit O_SEARCH geöffnet und die dem Dateiverzeichnis zugrunde liegenden Berechtigungen erlauben nicht das Durchsuchen des Dateiverzeichnisses.

 

EBADF

Der Parameter path spezifiziert keinen absoluten Pfadnamen und der Parameter fd hat weder den Wert AT_FDCWD, noch enthält er einen gültigen zum Lesen oder Suchen geöffneten Dateideskriptor.

 

ENOTDIR

Der Parameter path spezifiziert keinen absoluten Pfadnamen und der Dateideskriptor fd ist nicht mit einem Dateiverzeichnis verbunden.

Hinweis

mkdir() und mkdirat() werden nur für POSIX-Dateien ausgeführt. 

Siehe auch

chmod(), mknod(), umask(), stat(), fcntl.h, sys/stat.h, sys/types.h.