The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

mknod (2)
  • mknod (1) ( Solaris man: Команды и прикладные программы пользовательского уровня )
  • mknod (1) ( Русские man: Команды и прикладные программы пользовательского уровня )
  • mknod (1) ( Linux man: Команды и прикладные программы пользовательского уровня )
  • mknod (2) ( Solaris man: Системные вызовы )
  • mknod (2) ( FreeBSD man: Системные вызовы )
  • >> mknod (2) ( Русские man: Системные вызовы )
  • mknod (2) ( Linux man: Системные вызовы )
  • mknod (3) ( POSIX man: Библиотечные вызовы )
  • mknod (8) ( FreeBSD man: Команды системного администрирования )
  •  

    НАЗВАНИЕ

    mknod - создает специальный или обычный файл  

    СИНТАКСИС

    #include <sys/types.h>
    #include <sys/stat.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    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)


     

    Index

    НАЗВАНИЕ
    СИНТАКСИС
    ОПИСАНИЕ
    ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
    НАЙДЕННЫЕ ОШИБКИ
    СООТВЕТСТВИЕ СТАНДАРТАМ
    ЗАМЕЧАНИЯ
    СМ. ТАКЖЕ


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру