mkdir

MKDIR(2)                    Linux-Programmierhandbuch                   MKDIR(2)



BEZEICHNUNG
       mkdir, mkdirat - ein Verzeichnis erzeugen

ÜBERSICHT
       #include <sys/stat.h>

       int mkdir(const char *Pfadname, mode_t Modus);

       #include <fcntl.h>           /* Definition der AT_*-Konstanten */
       #include <sys/stat.h>

       int mkdirat(int Verzdd, const char *Pfadname, mode_t Modus);

   Mit Glibc erforderliche Makros (siehe feature_test_macros(7)):

       mkdirat():
           Seit Glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Vor Glibc 2.10:
               _ATFILE_SOURCE

BESCHREIBUNG
       mkdir() versucht, ein Verzeichnis mit dem Namen Pfadname zu erzeugen.

       Das Argument Modus gibt den zu verwendenden Zugriffsmodus an (siehe
       inode(7)). Es wird wie üblich noch von der umask des Prozesses verändert:
       Ohne Standard-ACL ist der Zugriffsmodus des erzeugten Verzeichnisses
       (Modus & ~umask & 0777). Die Berücksichtigung weitere Modus-Bits des
       erzeugten Verzeichnisses hängen vom Betriebssystem ab. Für Linux gelten
       die folgenden ANMERKUNGEN.

       Das neu erzeugte Verzeichnis trägt die effektive Benutzerkennung 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 Gruppeneigentümerschaft
       des Elternprozesses. Anderenfalls wird die effektive Gruppenkennung des
       erzeugenden Prozesses Besitzer des Verzeichnisses.

       Wenn das Elternverzeichnis 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 Verzdd 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 Verzdd den besonderen Wert AT_FDCWD
       annimmt, wird Pfadname als relativ zum aktuellen Arbeitsverzeichnis des
       aufrufenden Prozesses interpretiert (wie mkdir()).

       Falls Pfadname absolut ist, wird Verzdd ignoriert.

       Lesen Sie openat(2) für eine Beschreibung der Notwendigkeit von
       mkdirat().

RÜCKGABEWERT
       mkdir() und mkdirat() geben bei Erfolg 0 zurück. Bei einem Fehler wird -1
       zurückgegeben und errno gesetzt, um den Fehler anzuzeigen.

FEHLER
       EACCES Das Elternverzeichnis gibt dem Prozess keine Schreibberechtigung
              oder eines der Verzeichnisse in Pfadname erlaubt keine Suche.
              (Siehe auch path_resolution(7).)

       EBADF  (mkdirat()) Der Pfadname ist relativ, aber Verzdd ist weder
              AT_FDCWD noch ein gültiger Dateideskriptor.

       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 Pfadname zeigt aus dem für Sie zugänglichen Adressraum heraus.

       EINVAL Die letzte Komponente (»basename«) von Pfadname des neuen
              Verzeichnisses ist ungültig (beispielsweise enthält sie Zeichen,
              die im zugrunde liegenden Dateisystem nicht erlaubt sind).

       ELOOP  Bei der Auflösung von Pfadname wurden zu viele symbolische Links
              gefunden.

       EMLINK Die Anzahl von Links zum »Elternverzeichnis« würde LINK_MAX
              überschreiten.

       ENAMETOOLONG
              Pfadname war zu lang.

       ENOENT Eine Verzeichniskomponente von Pfadname existiert nicht oder ist
              ein toter symbolischer Link.

       ENOMEM Es war nicht genügend Kernelspeicher verfügbar.

       ENOSPC Das Gerät, welches Pfadname enthält, hat keinen Platz für ein
              neues Verzeichnis.

       ENOSPC Das neue Verzeichnis kann nicht erzeugt werden, da das
              Plattenkontingent des Benutzers erschöpft ist.

       ENOTDIR
              Eine als Verzeichnis benutzte Komponente von Pfadname ist kein
              Verzeichnis.

       ENOTDIR
              (mkdirat()) Pfadname ist relativ und Verzdd ist ein
              Dateideskriptor, der sich auf eine Datei bezieht, die kein
              Verzeichnis ist.

       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.

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, abgesehen von den Zugriffs-Bits, wird der Modus S_ISVTX
       ebenfalls anerkannt.

       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 Verzdd
       entspricht.

SIEHE AUCH
       mkdir(1), chmod(2), chown(2), mknod(2), mount(2), rmdir(2), stat(2),
       umask(2), unlink(2), acl(5), path_resolution(7)

KOLOPHON
       Diese Seite ist Teil der Veröffentlichung 5.13 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 https://www.kernel.org/doc/man-pages/.


ÜBERSETZUNG
       Die deutsche Übersetzung dieser Handbuchseite wurde von Martin Schulze
       <joey@infodrom.org>, Ralf Baumert <bau@heineken.chemie.uni-dortmund.de>,
       Daniel Kobras <kobras@linux.de>, Martin Eberhard Schauer
       <Martin.E.Schauer@gmx.de>, Helge Kreutzmann <debian@helgefjell.de>, Mario
       Blättermann <mario.blaettermann@gmail.com> und Dr. Tobias Quathamer
       <toddy@debian.org> erstellt.

       Diese Übersetzung ist Freie Dokumentation; lesen Sie die GNU General
       Public License Version 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ 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 die Mailingliste der Übersetzer ⟨debian-l10n-
       german@lists.debian.org⟩.



Linux                            27. August 2021                        MKDIR(2)