mkdir(2)

NUME
mkdir, mkdirat - creează un director

BIBLIOTECA
Biblioteca C standard (libc, -lc)

SINOPSIS
#include <sys/stat.h>

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

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

int mkdirat(int dirfd, const char *nume-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 nume-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 NOTE 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ă numele de rută dat în nume-rută este relativ, atunci acesta 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ă nume-rută este relativ și dirfd este valoarea specială AT_FDCWD, atunci nume-rută este interpretat relativ la directorul de lucru curent al procesului apelant (ca mkdir()).

Dacă nume-rută 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 nume-rută nu a permis permisiunea de căutare; (a se vedea și path_resolution(7)).

EBADF
    (mkdirat()) nume-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
    nume-rută există deja (nu neapărat ca director). Aceasta include cazul în care nume-rută este o legătură simbolică, „atârnată” sau nu.

EFAULT
    nume-rută indică în afara spațiului de adrese accesibil.

EINVAL
    Componenta finală („basename”) din nume-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 nume-rută.

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

ENAMETOOLONG
    nume-rută este prea lung.

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

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

ENOSPC
    Dispozitivul care conține nume-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 nume-rută nu este, de fapt, un director.

ENOTDIR
    (mkdirat()) nume-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 nume-rută nu acceptă crearea de directoare.

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

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 nume-rută este un nume de 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-2008.

ISTORIC

mkdir()
    SVr4, BSD, POSIX.1-2001.

mkdirat()
    Linux 2.6.16, glibc 2.4.

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.