mkdir
пытается создать каталог, который называется
pathname.
mode
задает права доступа, которые получит свежесозданный каталог. Эти
права стандартным образом модифицируются с помощью
umask:
права доступа оказываются равны
(mode & ~umask).
Свежесозданный каталог принадлежит фактическому владельцу процесса.
Если на родительском каталоге установлен флаг setgid, или файловая
система смонтирована с семантикой групп в стиле BSD, то новый каталог
унаследует группу-владельца от своего родительского каталога; в
противном случае группой-владельцем станет фактическая группа
процесса.
Если у родительского каталога установлен бит setgid, то он будет
установлен также и у свежесозданного каталога.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
mkdir
возвращает ноль при успешном завершении или -1, если произошла ошибка
(в этом случае
errno
устанавливается должным образом).
ОШИБКИ
EPERM
Файловая система, содержащая
pathname,
не поддерживает создание каталогов.
EEXISTpathname
уже существует (это не обязательно каталог). Эта ошибка также
возникает, когда
pathname
является символической ссылкой, висячей или нет.
EFAULT
pathname
указывает за пределы доступного адресного пространства.
EACCES
Родительский каталог не позволяет запись, или же один из каталогов,
перечисленных в
pathname,
не позволяет поиск (выполнение).
ENAMETOOLONG
pathname
слишком длинно.
ENOENT
Компонент пути
pathname
не существует или является висячей символической ссылкой.
ENOTDIR
Компонент пути, использованный как каталог в
pathname,
в действительности таковым не является.
ENOMEM
Ядру не хватило памяти.
EROFS
Файл находится на файловой системе, смонтированной только для чтения.
ELOOP
pathname
является зацикленной символической ссылкой, то есть при подстановке
возникает ссылка на неё саму.
ENOSPC
На устройстве, содержащем
pathname,
нет места для создания новой записи в каталоге. Это может произойти
также, если исчерпана квота дискового пространства пользователя.
СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4, POSIX, BSD, SYSV, X/OPEN. SVr4 документирует дополнительные
коды ошибок EIO, EMULTIHOP и ENOLINK; POSIX.1 не упоминает ELOOP.
В протоколе, на котором работает NFS, есть множество недоработок.
Некоторые из них влияют на
mkdir.