ИМЯ
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 <[email protected]>, Alexey <[email protected]>, Azamat Hackimov <[email protected]>, Dmitriy S. Seregin <[email protected]>, Dmitry Bolkhovskikh <[email protected]>, ITriskTI <[email protected]>, Max Is <[email protected]>, Yuri Kozlov <[email protected]>, Иван Павлов <[email protected]> и Малянов Евгений Викторович <[email protected]> Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на [email protected]5 февраля 2023 г. | Linux man-pages 6.03 |