Главная » 2017 » Ноябрь » 15 » man 2 mknod
23:05
man 2 mknod

SEO sprint - Всё для максимальной раскрутки!

НАЗВАНИЕ
mknod - создает специальный или обычный файл
СИНТАКСИС

#include
#include
#include
#include

int mknod(const char *pathname, mode_t mode, dev_t dev);


ОПИСАНИЕ
Системный вызов mknod создат запись inode в файловой системе (обычный файл, файл устройства или именованый канал) с именем pathname, с атрибутами, определяемыми параметрами mode и dev.

Параметр mode задает как права доступа, так и тип создаваемой записи. В этом параметре содержится битовая комбинация (используя побитовое логическое сложение OR) одного из нижеперечисленных типов файлов и прав доступа для нового узла. Права доступа изменяются, при этом значение umask процесса используется обычным способом: права доступа становятся равны (mode & ~umask). Тип файла должен быть S_IFREG, S_IFCHR, S_IFBLK, S_IFIFO or S_IFSOCK для определения обычного файла (он будет создан пустым), особого символьного файла, особого блочного файла, FIFO (именованного канала) или доменного сокета Unix соответственно. (Пустой тип файла эквивалентно указанию типа S_IFREG.)

Если тип файла - S_IFCHR или S_IFBLK, то dev задает основной и вспомогательный номера создаваемого файла устройства; в остальных случаях параметр игнорируется. Если pathname уже существует, или является символьной ссылкой, то вызов завершается с ошибкой EEXIST. Созданный файл будет принадлежать фактическому владельцу процесса. Если в правах доступа к каталогу, в котором находится файл, установлен бит setgid, или если файловая система смонтирована с семантикой групп BSD, то новый файл унаследует группу-владельца от своего родительского каталога; в противном случае группой-владельцем станет фактическая группа процесса.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При успешном завершении
работы mknod возвращаемое значение равно нулю, в случае ошибки оно равно -1 и переменная errno приобретает соответствующее значение.
НАЙДЕННЫЕ ОШИБКИ

EPERM
mode запросило создание не обычного файла, не именованного канала FIFO, не доменного сокета Unix, а чего-то другого, и при этом вывавший не является суперпользователем; также возвращается если файловая система, содержащая pathname не поддерживает запрошенный типа записи inode.
EINVAL
В параметре mode запрошено создание неизвестного типа файла.
EEXIST
pathname уже существует.
EFAULT
pathname указывает на каталог за пределами доступного адресного пространства.
EACCES
Родительский каталог не дает процессу прав на запись, или же один из каталогов в pathname не дает прав на поиск (выполнение).
ENAMETOOLONG
pathname слишком длинно.
ENOENT
Компонент пути pathname не существует или является "висячей" символьной ссылкой.
ENOTDIR
Компонент пути, использованный как каталог в pathname, в действительности таковым не является.
ENOMEM
Недостаточно памяти в системе.
EROFS
pathname ссылается на файл, находящийся в файловой системе, предназначенной только для чтения.
ELOOP
pathname является зацикленной символьной ссылкой, то есть при соответствующей подстановке возникает ссылка на неё саму.
ENOSPC
На устройстве, содержащем pathname, нет места для создания нового файла.


СООТВЕТСТВИЕ СТАНДАРТАМ
SVr4 (этот системный вызов требует привилегий, поэтому не упомянут в POSIX), 4.4BSD. Версия Linux отличается от версии SVr4 тем, что не требует прав суперпользователя для создания каналов FIFO, а также тем, что не описывает коды ошибок EMULTIHOP, ENOLINK и EINTR.
ЗАМЕЧАНИЯ
Стандарт POSIX 1003.1-2001 гласит: "Единственно, как можно использовать mknod() в переносимых программах - это создавать специальные FIFO-файлы. Если mode на является S_IFIFO или dev не равно 0, то поведение mknod() неопределено." В Linux этот вызов не может использоваться для создания каталогов. Создавать каталоги необходимо, используя mkdir, а каналы FIFO - используя mkfifo. В протоколе, по которому работает NFS, содержится множество недоработок. Некоторые из них влияют на mknod.
СМ. ТАКЖЕ
fcntl(2), mkdir(2), mount(2), socket(2), stat(2), umask(2), unlink(2), mkfifo(3)
Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 467 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar