Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

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

LIBRARY

       Standard C library (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():
           Since glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Before 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 указывает на файл в файловой системе, доступной только для чтения.

ВЕРСИИ

       mkdirat()  was added in Linux 2.6.16; library support was added in glibc 2.4.

СТАНДАРТЫ

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

       mkdirat(): POSIX.1-2008.

ЗАМЕЧАНИЯ

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

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

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

СМ. ТАКЖЕ

       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>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.