table of contents
other versions
- jessie 1.8-1
- stretch 1.22-1
- testing 2.6-1
- stretch-backports 2.6-1~bpo9+1
- unstable 2.6-1
other sections
MKDIR(2) | Linux-Programmierhandbuch | MKDIR(2) |
BEZEICHNUNG¶
mkdir, mkdirat - ein Verzeichnis erzeugenÜBERSICHT¶
#include <sys/stat.h> #include <sys/types.h> int mkdir(const char *Pfadname, mode_t Modus); #include <fcntl.h> /* Definition der AT_*-Konstanten */ #include <sys/stat.h> int mkdirat(int dirfd, const char *Pfadname, mode_t Modus);
Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):
mkdirat():
- Seit Glibc 2.10:
- _XOPEN_SOURCE >= 700 || _POSIX_C_SOURCE >= 200809L
- Bis Glibc 2.10:
- _ATFILE_SOURCE
BESCHREIBUNG¶
mkdir() versucht, ein Verzeichnis mit dem Namen pathame zu erzeugen. Das Argument Modus legt die zu verwendenden Zugriffsrechte fest. Es wird wie üblich noch von der umask des Prozesses verändert: Die Zugriffsrechte des erzeugten Verzeichnisses sind ( Modus & ~umask & 0777). Weitere Modus-Bits des erzeugten Verzeichnisses hängen vom Betriebssystem ab. Für Linux gilt das Folgende. Das neu erzeugte Verzeichnis trägt die effektive Benutzer-ID des Prozesses. Wenn das das neue Verzeichnis enthaltende Verzeichnis set-group-id gesetzt hat oder wenn das Dateisystem mit der BSD-Gruppensemantik eingehängt wurde ( mount -o bsdgroups oder synonym mount -o grpid), erbt das neue Verzeichnis die Gruppen-ID des erzeugenden Prozesses. Anderenfalls wird die effektive Gruppen-ID des erzeugenden Prozesses Besitzer des Verzeichnisses. Wenn das beinhaltende Verzeichnis set-group-id gesetzt hat, wird das neue Verzeichnis dieses ebenfalls gesetzt haben.mkdirat()¶
Der Systemaufruf mkdirat() funktioniert genauso wie mkdir(), außer den hier beschriebenen Unterschieden. Falls der in Pfadname übergebene Pfadname relativ ist, wird er als relativ zu dem im Dateideskriptor dirfd referenzierten Verzeichnis interpretiert (statt relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses, wie es bei mkdir() für einen relativen Pfadnamen erfolgt). Falls Pfadname relativ ist und dirfd den besonderen Wert AT_FDCWD annimmt, wird Pfadname als relativ zum aktuellen Arbeitsverzeichnis des aufrufenden Prozesses interpretiert (wie mkdir()). Falls Pfadname absolut ist, wird dirfd ignoriert. Lesen Sie openat(2) für eine Beschreibung der Notwendigkeit von mkdirat().RÜCKGABEWERT¶
mkdir() und mkdirat() geben bei Erfolg 0 zurück und -1, wenn ein Fehler aufgetreten ist, errno wird dabei entsprechend gesetzt.FEHLER¶
- EACCES
- Das beinhaltende Verzeichnis gibt dem Prozess keine Schreibberechtigung oder eines der Verzeichnisse in Pfadname erlaubt keine Suche. (Siehe auch path_resolution(7).)
- EDQUOT
- Das Kontingent des Benutzers an Datenträgerblöcken oder Inodes auf dem Dateisystem ist ausgeschöpft.
- EEXIST
- Pfadname existiert bereits (jedoch nicht notwendigerweise als Verzeichnis). Das umfasst auch den Fall, dass Pfadname ein symbolischer Link ist – egal ob er ins Leere weist oder nicht.
- EFAULT
- pathname zeigt aus dem für Sie zugänglichen Adressraum heraus.
- ELOOP
- Bei der Auflösung von pathname wurden zu viele symbolische Links gefunden.
- EMLINK
- Die Anzahl von Links zum "Elternverzeichnis" würde LINK_MAX überschreiten.
- ENAMETOOLONG
- pathname war zu lang.
- ENOENT
- Eine Verzeichniskomponente von pathname existiert nicht oder ist ein toter symbolischer Link.
- ENOMEM
- Es war nicht genügend Kernel-Speicher verfügbar.
- ENOSPC
- Das Gerät, welches pathmame enthält, hat keinen Platz für ein neues Verzeichnis.
- ENOSPC
- Das neue Verzeichnis kann nicht erzeugt werden, da die Disk-Quota des Users erschöpft ist.
- ENOTDIR
- Eine als Verzeichnis benutzte Komponente von pathname ist kein Verzeichnis.
- EPERM
- Das Gerät, welches Pfadname enthält, erlaubt keine Erstellung von Verzeichnissen.
- EROFS
- Pfadname bezieht sich auf eine Datei auf einem schreibgeschützten Dateisystem.
- EBADF
- dirfd ist kein zulässiger Dateideskriptor.
- ENOTDIR
- Pfadname ist relativ und dirfd ist ein Dateideskriptor, der sich auf eine Datei statt auf ein Verzeichnis bezieht.
VERSIONEN¶
mkdirat() wurde zu Linux in Kernel 2.6.16 hinzugefügt; Bibliotheksunterstützung wurde zu Glibc in Version 2.4 hinzugefügt.KONFORM ZU¶
mkdir(): SVr4, BSD, POSIX.1-2001, POSIX.1-2008. mkdirat(): POSIX.1-2008.ANMERKUNGEN¶
Unter Linux wird außer den Zugriffsberechtigungsbits nur das S_ISVTX-Modusbit beachtet. Somit hat unter Linux das erzeugte Verzeichnis den Modus ( Modus & ~umask & 01777). Siehe auch stat(2). Es gibt noch viele Ungereimtheiten im NFS zugrunde liegenden Protokoll. Einige davon betreffen mkdir().Anmerkungen zur Glibc¶
Unter älteren Kernels, in denen mkdirat() nicht verfügbar ist, weicht die Glibc-Wrapper-Funktion auf mkdir() aus. Wenn Pfadname ein relativer Pfadname ist, dann konstruiert die Glibc einen Pfadnamen, der auf jenem symbolischen Link in /proc/self/fd basiert, der dem Argument dirfd entspricht.SIEHE AUCH¶
mkdir(1), chmod(2), chown(2), mknod(2), mount(2), rmdir(2), stat(2), umask(2), unlink(2), path_resolution(7)KOLOPHON¶
Diese Seite ist Teil der Veröffentlichung 3.74 des Projekts Linux- man-pages. 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/.ÜBERSETZUNG¶
Die deutsche Übersetzung dieser Handbuchseite wurde von Ralf Baumert <bau@heineken.chemie.uni-dortmund.de>, Martin Schulze <joey@infodrom.org>, Daniel Kobras <kobras@linux.de>, Martin Eberhard Schauer <Martin.E.Schauer@gmx.de>, Mario Blättermann <mario.blaettermann@gmail.com> und Helge Kreutzmann <debian@helgefjell.de> 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 <debian-l10n-german@lists.debian.org>.19. August 2014 | Linux |