MKNOD(2)
НАЗВАНИЕ
mknod - создание каталога, специального или обычного
файла
СИНТАКСИС
int mknod (path, mode, dev)
char *path;
int mode, dev;
ОПИСАНИЕ
Системный вызов mknod создает новый файл с маршрутным
именем, на которое указывает аргумент path. Режим нового файла определяется аргументом mode. Биты в значении
mode интерпретируется следующим образом:
0010000 | Специальный именованный канал. |
0020000 | Специальный символьный файл. |
0040000 | Каталог. |
0060000 | Специальный блочный файл. |
0100000 или 0000000 | Обычный файл. |
Остальные биты в значении mode трактуются как в системном вызове chmod(2).
Идентификаторы владельца и группы файла устанавливаются
равными действующим идентификаторам, соответственно,
пользователя и группы процесса.
Значения аргумента mode, построенные не по правилам,
описанным выше, считаются неопределенными и не должны
использоваться. Младшие 9 бит значения mode модифицируются маской режима создания файлов: обнуляются те биты,
которые соответствуют единичным битам маски
[см.
umask(2)]. Если mode определяет специальный блочный или
символьный файл, то аргумент dev задает зависимую от
конфигурации системы спецификацию блочного или символьного устройства ввода/вывода; в противном случае аргумент dev игнорируется.
Системный вызов mknod может исполняться только суперпользователем для типов файлов, отличных от специального именованного канала.
Системный вызов mknod завершается неудачей и новый файл
не создается, если выполнено хотя бы одно из следующих
условий:
- [EPERM]
- Действующий идентификатор пользователя процесса не равен идентификатору суперпользователя.
- [ENOTDIR]
- Компонент маршрута не является каталогом.
- [ENOENT]
- Компонент маршрута не существует.
- [EROFS]
- Каталог, в котором файл должен быть создан,
расположен в файловой системе, доступной
только на чтение.
- [EEXIST]
- Указанный файл уже существует.
- [EFAULT]
- Аргумент path указывает за пределы отведенного процессу адресного пространства.
- [EINTR]
- Во время выполнения системного вызова перехвачен сигнал.
- [ENOLINK]
- Маршрутное имя path указывает на удаленный
компьютер, связи с которым в данный момент
нет.
- [EMULTIHOP] Компоненты path требуют многократного обращения к удаленным компьютерам.
СМ. ТАКЖЕ
chmod(2), exec(2), umask(2), fs(4).
mkdir(1) в Справочнике пользователя.
ДИАГНОСТИКА
При успешном завершении результат равен 0; в случае
ошибки возвращается -1, а переменной errno присваивается код ошибки.
ПРЕДОСТЕРЕЖЕНИЯ
Если системный вызов mknod используется для создания
устройства в каталоге на удаленном компьютере (система
РУФ), то старший и младший номера устройства интерпретируются обслуживающим процессом.