mkdir(2)

NUME
mkdir, mkdirat - creează un director

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <sys/stat.h>

int mkdir(const char *rută, mode_t mod-permisiuni);

#include <fcntl.h>           /* Definirea constantelor AT_* */
#include <sys/stat.h>

int mkdirat(int dirfd, const char *rută, mode_t mod-permisiuni);

    Cerințe pentru macrocomenzi de testare a caracteristicilor pentru glibc (consultați feature_test_macros(7)):

mkdirat():
    Începând cu glibc 2.10
        _POSIX_C_SOURCE >= 200809L
    Înainte de glibc 2.10:
        _ATFILE_SOURCE

DESCRIERE
mkdir() încearcă să creeze un director numit rută.

Argumentul mod-permisiuni specifică modul pentru noul director (a se vedea inode(7)). Acesta este modificat de umask al procesului în mod obișnuit: în absența unei ACL implicite, modul directorului creat este (mode & ~umask & 0777). Dacă alți biți mode sunt onorați pentru directorul creat depinde de sistemul de operare. Pentru Linux, a se vedea secțiunea VERSIUNI de mai jos.

Directorul nou creat va fi deținut de ID-ul de utilizator efectiv al procesului. Dacă directorul care conține fișierul are bitul set-group-ID activat sau dacă sistemul de fișiere este montat cu semantica de grup BSD (mount -o bsdgroups sau, sinonim mount -o grpid), noul director va moșteni proprietatea de grup de la părintele său; în caz contrar, va fi deținut de ID-ul de grup efectiv al procesului.

Dacă directorul părinte are bitul set-group-ID setat, atunci la fel îl va avea și directorul nou creat.

  mkdirat()
Apelul de sistem mkdirat() funcționează exact în același mod ca mkdir(), cu excepția diferențelor descrise aici.

Dacă ruta dată în rută este relativă, atunci aceasta este interpretată în raport cu directorul la care se referă descriptorul de fișier dirfd ( și nu în raport cu directorul curent de lucru al procesului apelant, așa cum face mkdir() pentru un nume de rută relativ).

Dacă ruta este relativă și dirfd este valoarea specială AT_FDCWD, atunci rută este interpretată relativ la directorul de lucru curent al procesului apelant (ca mkdir()).

Dacă ruta este absolută, atunci fd-director este ignorat.

A se vedea openat(2) pentru o explicație a necesității mkdirat().

VALOAREA RETURNATĂ
mkdir() și mkdirat() returnează zero în caz de succes. În caz de eroare, se returnează -1, iar errno este configurată pentru a indica eroarea.

ERORI-IEȘIRE

EACCES
    Directorul părinte nu permite permisiunea de scriere pentru proces sau unul dintre directorii din rută nu a permis permisiunea de căutare; (a se vedea și path_resolution(7)).

EBADF
    (mkdirat()) rută este relativă, dar dirfd nu este nici AT_FDCWD, nici un descriptor de fișier valid.

EDQUOT
    Cota utilizatorului de blocuri de disc sau de noduri-i pe sistemul de fișiere a fost epuizată.

EEXIST
    rută există deja (nu neapărat ca director). Aceasta include cazul în care rută este o legătură simbolică, „atârnată” sau nu.

EFAULT
    ruta indică în afara spațiului de adrese accesibil.

EINVAL
    Componenta finală („basename”) din rută al noului director este nevalidă (de exemplu, conține caractere care nu sunt permise de sistemul de fișiere subiacent).

ELOOP
    S-au întâlnit prea multe legături simbolice în rezolvarea rutei.

EMLINK
    Numărul de legături către directorul părinte ar depăși LINK_MAX.

ENAMETOOLONG
    ruta era prea lungă.

ENOENT
    O componentă de director din rută nu există sau este o legătură simbolică ruptă.

ENOMEM
    Nu a fost disponibilă suficientă memorie pentru nucleu.

ENOSPC
    Dispozitivul care conține rută nu are spațiu pentru noul director.

ENOSPC
    Noul director nu poate fi creat deoarece cota de disc a utilizatorului este epuizată.

ENOTDIR
    O componentă utilizată ca director în rută nu este, de fapt, un director.

ENOTDIR
    (mkdirat()) rută este relativă și dirfd este un descriptor de fișier care se referă la un alt fișier decât un director.

EPERM
    Sistemul de fișiere care conține rută nu acceptă crearea de directoare.

EROFS
    ruta se referă la un fișier pe un sistem de fișiere numai-pentru-citire.

EOVERFLOW
    Asocierile UID sau GID (a se vedea user_namespaces(7)) nu au fost configurate.

VERSIUNI
Sub Linux, în afară de biții de permisiune, este onorat și bitul de mod-permisiune S_ISVTX.

  note glibc
Pe nucleele mai vechi în care mkdirat() nu este disponibil, funcția de învăluire glibc revine la utilizarea mkdir(). Atunci când rută este o rută relativă, glibc construiește un nume de rută bazat pe legătura simbolică din /proc/self/fd care corespunde argumentului dirfd.

STANDARDE
POSIX.1-2024.

ISTORIC

mkdir()
    4.2BSD, SVr4, POSIX.1-1988.

mkdirat()
    glibc 2.4, Linux 2.6.16, POSIX.1-2008.

NOTE
Există multe neajunsuri în protocolul care stă la baza NFS. Unele dintre acestea afectează mkdir().

CONSULTAȚI ȘI
mkdir(1), chmod(2), chown(2), mknod(2), mount(2), rmdir(2), stat(2), umask(2), unlink(2), acl(5), path_resolution(7)

TRADUCERE
Traducerea în limba română a acestui manual a fost făcută de Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>

Această traducere este documentație gratuită; citiți Licența publică generală GNU Versiunea 3 (https://www.gnu.org/licenses/gpl-3.0.html) sau o versiune ulterioară cu privire la condiții privind drepturile de autor. NU se asumă NICIO RESPONSABILITATE.

Dacă găsiți erori în traducerea acestui manual, vă rugăm să trimiteți un e-mail la translation-team-ro@lists.sourceforge.net.