mknod

MKNOD(2)         Ð ÑководÑÑво ÐÑогÑаммиÑÑа Linux        MKNOD(2)



ÐÐЯ
       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 ÑоздаÑÑ Ñзел Ñайловой
       ÑиÑÑÐµÐ¼Ñ (Ñайл, ÑпеÑиалÑнÑй Ñайл ÑÑÑÑойÑÑва или
       именованнÑй канал) Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ pathname и Ñ
       аÑÑибÑÑами, коÑоÑÑе задаÑÑÑÑ ÑеÑез mode и dev.

       ÐÑгÑÐ¼ÐµÐ½Ñ mode Ð·Ð°Ð´Ð°ÐµÑ ÐºÐ°Ðº пÑава доÑÑÑпа, Ñак и
       Ñип Ñзла, коÑоÑÑй нÑжно ÑоздаÑÑ.  ÐÑгÑменÑ
       должен бÑÑÑ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñией (биÑовое Ñложение
       OR) одного из нижепеÑеÑиÑленнÑÑ Ñипов
       Ñайлов и пÑав доÑÑÑпа Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ñзла.

       ÐÑава доÑÑÑпа изменÑÑÑÑÑ Ð·Ð½Ð°Ñением umask
       пÑоÑеÑÑа в обÑÑном поÑÑдке: пÑава
       Ñоздаваемого Ñзла бÑдÑÑ (mode & ~umask).

       Тип Ñайла должен бÑÑÑ Ð¾Ð´Ð½Ð¸Ð¼ из знаÑений:
       S_IFREG, S_IFCHR, S_IFBLK, S_IFIFO или S_IFSOCK коÑоÑÑе
       опÑделÑÑÑ ÑооÑвеÑÑÑвенно обÑÑнÑй Ñайл (коÑоÑÑй
       бÑÐ´ÐµÑ Ñоздан пÑÑÑÑм), ÑпеÑиалÑнÑй ÑимволÑнÑй
       Ñайл, ÑпеÑиалÑнÑй блоÑнÑй Ñайл, FIFO
       (именованнÑй канал) или доменнÑй ÑокеÑ
       Unix.  (ÐÐ¾Ð»Ñ Ð² Ñипе Ñайла ÑквиваленÑен ÑипÑ
       S_IFREG.)

       ÐÑли Ñип Ñайла S_IFCHR или S_IFBLK, Ñо аÑгÑÐ¼ÐµÐ½Ñ dev
       Ð·Ð°Ð´Ð°ÐµÑ ÑÑаÑÑий (major) и младÑий (minor) номеÑа
       Ñоздаваемого Ñайла ÑÑÑÑойÑÑва; в оÑÑалÑнÑÑ
       ÑлÑÑаÑÑ ÑÑого аÑгÑÐ¼ÐµÐ½Ñ Ð¸Ð³Ð½Ð¾ÑиÑÑеÑÑÑ.

       ÐÑли pathname Ñже ÑÑÑеÑÑвÑÐµÑ Ð¸Ð»Ð¸ ÑвлÑеÑÑÑ
       ÑимволÑной ÑÑÑлкой, вÑзов звеÑÑиÑÑÑ Ñ Ð¾Ñибкой
       EEXIST.

       ÐÐ»Ð°Ð´ÐµÐ»ÐµÑ Ñозданного Ñзла бÑÐ´ÐµÑ ÑÑÑановлен
       ÑолаÑно ÑÑÑекÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ
       полÑзоваÑÐµÐ»Ñ Ð¿ÑоÑеÑÑа, из коÑоÑого бÑл
       вÑполнен вÑзов.  ÐÑли в пÑÐ°Ð²Ð°Ñ Ð´Ð¾ÑÑÑпа к
       каÑалогÑ, в коÑоÑом наÑодиÑÑÑ Ñзел,
       ÑÑÑановлен Ð±Ð¸Ñ setgid, или еÑли ÑайловаÑ
       ÑиÑÑема ÑмонÑиÑована Ñ ÑеманÑикой гÑÑпп BSD,
       Ñо новÑй Ñзел ÑнаÑледÑÐµÑ Ð³ÑÑппÑ-владелÑÑа оÑ
       Ñвоего ÑодиÑелÑÑкого каÑалога; в пÑоÑивном
       ÑлÑÑае гÑÑппой-владелÑÑем ÑÑÐ°Ð½ÐµÑ Ð³ÑÑппа
       ÑооÑвеÑÑÑвÑÑÑÐ°Ñ ÑÑÑекÑÐ¸Ð²Ð½Ð¾Ð¼Ñ Ð¸Ð´ÐµÐ½ÑиÑикаÑоÑÑ
       гÑÑÐ¿Ð¿Ñ Ð¿ÑоÑеÑÑа.

ÐÐÐÐÐ ÐЩÐÐÐÐÐ ÐÐÐЧÐÐÐÐ
       Ð ÑлÑÑае ÑÑпеÑа mknod возвÑаÑÐ°ÐµÑ Ð½Ð¾Ð»Ñ, в ÑлÑÑае
       оÑибки возвÑаÑаеÑÑÑ -1 и знаÑение errno
       ÑÑÑанавливаеÑÑÑ ÑооÑвеÑÑÑвÑÑÑим обÑазом.

ÐШÐÐÐÐ
       EPERM  ÐÑгÑÐ¼ÐµÐ½Ñ mode ÑÑÑановлен Ð´Ð»Ñ ÑозданиÑ
              Ñего-Ñо оÑлиÑного Ð¾Ñ Ð¾Ð±ÑÑного Ñайла, FIFO
              (именованного канала) или
              доменного ÑокеÑа Unix и вÑзÑваÑÑий
              пÑоÑеÑÑ Ð½Ðµ Ð¸Ð¼ÐµÐµÑ Ð¿Ñав ÑÑпеÑполÑзоваÑелÑ;
              ÑÑа же оÑибка возвÑаÑаеÑÑÑ, еÑли
              ÑÐ°Ð¹Ð»Ð¾Ð²Ð°Ñ ÑиÑÑема, ÑодеÑжаÑÐ°Ñ pathname не
              поддеÑÐ¶Ð¸Ð²Ð°ÐµÑ Ð·Ð°ÑÑебованнÑй Ñип
              Ñоздаваемого Ñзла.

       EINVAL заÑÑебовано Ñоздание Ñего-Ñо олиÑного
              Ð¾Ñ Ð¾Ð±ÑÑного Ñайла, ÑпеÑиалÑного Ñайла
              ÑÑÑÑойÑÑва, FIFO или ÑокеÑа.

       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 веÑÑии в Ñом, ÑÑо не
       ÑÑебÑÐµÑ Ð¿Ñивелегий ÑÑпеÑполÑзоваÑÐµÐ»Ñ Ð´Ð»Ñ
       ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÐºÐ°Ð½Ð°Ð»Ð¾Ð², а Ñакже в Ñом, ÑÑо не
       докÑменÑиÑÑÑÑÑÑ Ð¾Ñибки 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)

ÐÐÐ ÐÐÐÐ
       ÐеÑевÑл Ñ Ð°Ð½Ð³Ð»Ð¸Ð¹Ñкого ÐикÑÐ¾Ñ ÐиÑлобоков
       <corochoone@perm.ru> 2004



Linux 2.4                         2003-04-23                          MKNOD(2)