Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

       mkdir, mkdirat - создаёт каталог

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <sys/stat.h>

       int mkdir(const char *pathname, mode_t mode);

       #include <fcntl.h>           /* определения констант AT_* */
       #include <sys/stat.h>

       int mkdirat(int dirfd, const char *pathname, mode_t mode);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       mkdirat():
           Начиная с glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           До glibc 2.10:
               _ATFILE_SOURCE

ОПИСАНИЕ

       Функция mkdir() пытается создать каталог с именем pathname.

       The  argument  mode  specifies  the  mode  for  the  new directory (see inode(7)).  It is modified by the
       process's umask in the usual way: in the absence of a default ACL, the mode of the created  directory  is
       (mode  &  ~umask  &  0777).  Whether other mode bits are honored for the created directory depends on the
       operating system.  For Linux, see NOTES below.

       Создаваемый каталог будет принадлежать фактическому владельцу процесса.  Если  у  родительского  каталога
       установлен  флаг set-group-ID, или файловая система смонтирована с семантикой групп в стиле BSD (mount -o
       bsdgroups или, что одно и тоже, mount -o grpid), то новый каталог унаследует группу владельца  от  своего
       родительского каталога; в противном случае группой владельцем станет фактическая группа процесса.

       Если  у родительского каталога установлен бит set-group-ID, то он будет установлен также и у создаваемого
       каталога.

   mkdirat()
       Системный вызов mkdirat() работает также как системный вызов mkdir(), за исключением  случаев,  описанных
       здесь.

       Если  в  pathname  задан  относительный путь, то он считается относительно каталога, на который ссылается
       файловый дескриптор dirfd (а не относительно текущего рабочего каталога  вызывающего  процесса,  как  это
       делается в mkdir()).

       Если  в  pathname  задан  относительный  путь  и  dirfd равно специальному значению AT_FDCWD, то pathname
       рассматривается относительно текущего рабочего каталога вызывающего процесса (как mkdir()).

       Если в pathname задан абсолютный путь, то dirfd игнорируется.

       Смотрите в openat(2) объяснение необходимости mkdirat().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       mkdir()  and mkdirat()  return zero on success.  On error, -1 is returned and errno is  set  to  indicate
       the error.

ОШИБКИ

       EACCES У  процесса  нет  прав  на  запись  в родительский каталог, или в одном из каталогов в pathname не
              разрешён поиск (смотрите также path_resolution(7)).

       EBADF  (mkdirat())  pathname is relative but dirfd is neither AT_FDCWD nor a valid file descriptor.

       EDQUOT Исчерпана пользовательская квота на дисковые блоки или иноды файловой системы.

       EEXIST pathname уже существует  (и  необязательно  как  каталог).  В  этом  случае  pathname  может  быть
              символьной ссылкой, повисшей или нет.

       EFAULT Аргумент pathname указывает за пределы доступного адресного пространства.

       EINVAL Последний  компонент («основная часть» (basename)) нового каталога pathname некорректен (например,
              содержит недопустимые в нижележащей файловой системе символы).

       ELOOP  Во время определения pathname встретилось слишком много символьных ссылок.

       EMLINK Количество ссылок на родительский каталог превысило бы LINK_MAX.

       ENAMETOOLONG
              pathname слишком длинен.

       ENOENT Один из каталогов в pathname не существует или является повисшей символьной ссылкой.

       ENOMEM Недостаточное количество памяти ядра.

       ENOSPC На устройстве, содержащем pathname, нет места для создания нового каталога.

       ENOSPC Новый каталог не может быть создан, так как превышена пользовательская дисковая квота.

       ENOTDIR
              Компонент пути, использованный как каталог в pathname, в действительности таковым не является.

       ENOTDIR
              (mkdirat())  Значение pathname содержит относительный путь и dirfd содержит  файловый  дескриптор,
              указывающий на файл, а не на каталог.

       EPERM  Файловая система, содержащая pathname, не поддерживает создание каталогов.

       EROFS  pathname указывает на файл в файловой системе, доступной только для чтения.

ВЕРСИИ

       В Linux кроме битов прав, в mode учитывается также бит S_ISVTX.

   Замечания по glibc
       В  старых  ядрах,  где  mkdirat() отсутствует, обёрточная функция glibc использует mkdir(). Если pathname
       является относительным путём, то glibc собирает путь относительно символической ссылки  в  /proc/self/fd,
       которая соответствует аргументу dirfd.

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

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

       mkdirat()
              Linux 2.6.16, glibc 2.4.

ПРИМЕЧАНИЯ

       В протоколе, на котором работает NFS, есть множество недоработок. Некоторые из них влияют на mkdir().

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

       Русский  перевод  этой   страницы   руководства   разработал(и)   aereiae   <aereiae@gmail.com>,   Alexey
       <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>, Dmitriy S. Seregin <dseregin@59.ru>,
       Dmitry  Bolkhovskikh  <d20052005@yandex.ru>,  ITriskTI <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>,
       Yuri  Kozlov  <yuray@komyakino.ru>,  Иван  Павлов   <pavia00@gmail.com>,   Малянов   Евгений   Викторович
       <maljanow@outlook.com> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                         mkdir(2)