.\" -*- coding: UTF-8 -*- .\" This manpage is Copyright (C) 1992 Drew Eckhardt; .\" and Copyright (C) 1993 Michael Haardt .\" and Copyright (C) 1993,1994 Ian Jackson .\" and Copyright (C) 2006, 2014, Michael Kerrisk .\" .\" SPDX-License-Identifier: GPL-1.0-or-later .\" .\" Modified 1996-08-18 by urs .\" Modified 2003-04-23 by Michael Kerrisk .\" Modified 2004-06-23 by Michael Kerrisk .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH mknod 2 "31 марта 2023 г." "Linux man\-pages 6.05.01" .SH ИМЯ mknod, mknodat \- создаёт специальный или обычный файл .SH LIBRARY Standard C library (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .PP \fBint mknod(const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP .PP \fB#include \fP/* определения констант AT_* */ \fB#include \fP .PP \fBint mknodat(int \fP\fIdirfd\fP\fB, const char *\fP\fIpathname\fP\fB, mode_t \fP\fImode\fP\fB, dev_t \fP\fIdev\fP\fB);\fP .fi .PP .RS -4 Требования макроса тестирования свойств для glibc (см. \fBfeature_test_macros\fP(7)): .RE .PP \fBmknod\fP(): .nf .\" || _XOPEN_SOURCE && _XOPEN_SOURCE_EXTENDED _XOPEN_SOURCE >= 500 || /* Since glibc 2.19: */ _DEFAULT_SOURCE || /* glibc <= 2.19: */ _BSD_SOURCE || _SVID_SOURCE .fi .SH ОПИСАНИЕ Системный вызов \fBmknod\fP() создаёт запись (node) в файловой системе (обычный файл, файл устройства или именованный канал) с именем \fIpathname\fP и атрибутами, заданными в \fImode\fP и \fIdev\fP. .PP В аргументе \fImode\fP указывается используемый режим файла и тип создаваемого узла. В этом параметре должна быть битовая комбинация (используя побитовое логическое сложение ИЛИ) нуля или более режимов файла, перечисленных в \fBinode\fP(7). .PP The file mode is modified by the process's \fIumask\fP in the usual way: in the absence of a default ACL, the permissions of the created node are (\fImode\fP & \[ti]\fIumask\fP). .PP .\" (S_IFSOCK since Linux 1.2.4) Для указания обычного файла, специального символьного файла, специального блочного файла, FIFO (именованного канала) или доменного сокета UNIX типом должен быть один из \fBS_IFREG\fP, \fBS_IFCHR\fP, \fBS_IFBLK\fP, \fBS_IFIFO\fP или \fBS_IFSOCK\fP, соответственно (нулевой тип файла эквивалентен типу \fBS_IFREG\fP). .PP Если тип файла равен \fBS_IFCHR\fP или \fBS_IFBLK\fP, то в \fIdev\fP задаётся основной и вспомогательный номера создаваемого специального файла устройства (\fBmakedev\fP(3) может оказаться полезной при создании значения для \fIdev\fP); в остальных случаях аргумент игнорируется. .PP Если \fIpathname\fP уже существует, или является символьной ссылкой, то вызов завершается с ошибкой \fBEEXIST\fP. .PP .\" .\" Созданный файл будет принадлежать ID эффективного владельца процесса. Если в правах доступа к каталогу, в котором находится файл, установлен бит set\-group\-ID, или если файловая система смонтирована с семантикой групп BSD, то новый файл унаследует группу\-владельца от своего родительского каталога; в противном случае группой\-владельцем станет ID эффективной группы процесса. .SS mknodat() Системный вызов \fBmknodat\fP() работает также как системный вызов \fBmknod\fP(), за исключением случаев, описанных здесь. .PP Если в \fIpathname\fP задан относительный путь, то он считается относительно каталога, на который ссылается файловый дескриптор \fIdirfd\fP (а не относительно текущего рабочего каталога вызывающего процесса, как это делается в \fBmknod\fP()). .PP Если в \fIpathname\fP задан относительный путь и \fIdirfd\fP равно специальному значению \fBAT_FDCWD\fP, то \fIpathname\fP рассматривается относительно текущего рабочего каталога вызывающего процесса (как \fBmknod\fP()). .PP Если в \fIpathname\fP задан абсолютный путь, то \fIdirfd\fP игнорируется. .PP Смотрите в \fBopenat\fP(2) объяснение необходимости \fBmknodat\fP(). .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" \fBmknod\fP() and \fBmknodat\fP() return zero on success. On error, \-1 is returned and \fIerrno\fP is set to indicate the error. .SH ОШИБКИ .TP \fBEACCES\fP У процесса нет прав на запись в родительский каталог, или в одном из каталогов в \fIpathname\fP не разрешён поиск (смотрите также \fBpath_resolution\fP(7)). .TP \fBEBADF\fP (\fBmknodat\fP()) \fIpathname\fP is relative but \fIdirfd\fP is neither \fBAT_FDCWD\fP nor a valid file descriptor. .TP \fBEDQUOT\fP Исчерпана пользовательская квота на дисковые блоки или иноды файловой системы. .TP \fBEEXIST\fP \fIpathname\fP уже существует. В этом случае \fIpathname\fP может быть символьной ссылкой, повисшей или нет. .TP \fBEFAULT\fP Аргумент \fIpathname\fP указывает за пределы доступного адресного пространства. .TP \fBEINVAL\fP В аргументе \fImode\fP указано значение, отличное от значения для обычного файла, специального файла устройства, FIFO или сокета. .TP \fBELOOP\fP Во время определения \fIpathname\fP встретилось слишком много символьных ссылок. .TP \fBENAMETOOLONG\fP \fIpathname\fP слишком длинен. .TP \fBENOENT\fP Один из каталогов в \fIpathname\fP не существует или является повисшей символьной ссылкой. .TP \fBENOMEM\fP Недостаточное количество памяти ядра. .TP \fBENOSPC\fP На устройстве, содержащем \fIpathname\fP, нет места для создания нового элемента. .TP \fBENOTDIR\fP Компонент пути, использованный как каталог в \fIpathname\fP, в действительности таковым не является. .TP \fBENOTDIR\fP (\fBmknodat\fP()) \fIpathname\fP is relative and \fIdirfd\fP is a file descriptor referring to a file other than a directory. .TP \fBEPERM\fP .\" For UNIX domain sockets and regular files, EPERM is returned only in .\" Linux 2.2 and earlier; in Linux 2.4 and later, unprivileged can .\" use mknod() to make these files. В аргументе \fImode\fP запрошено создание чего\-то, отличного от обычного файла, специального файла устройства, FIFO (именованного канала) или доменного сокета UNIX, и у вызвавшего процесса нет прав (Linux: не имеет мандата \fBCAP_MKNOD\fP); также завершается, если файловая система, содержащая \fIpathname\fP, не поддерживает тип запрашиваемой ноды. .TP \fBEROFS\fP \fIpathname\fP указывает на файл в файловой системе, доступной только для чтения. .SH ВЕРСИИ В POSIX.1\-2001 сказано: «Единственный способ, которым можно использовать \fBmknod\fP() в переносимых программах это создание специального файла FIFO. Если значение \fImode\fP не равно \fBS_IFIFO\fP или \fIdev\fP не равно 0, то поведение \fBmknod\fP() не определено.» Однако, в настоящее время никогда не используйте \fBmknod\fP() для этой цели; вместо этого используйте функцию \fBmkfifo\fP(3), которая создана специально для этого. .PP .\" and one should make UNIX domain sockets with socket(2) and bind(2). В Linux вызов \fBmknod\fP() не может использоваться для создания каталогов. Для этого есть системный вызов \fBmkdir\fP(2). .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ .TP \fBmknod\fP() .\" The Linux version differs from the SVr4 version in that it .\" does not require root permission to create pipes, also in that no .\" EMULTIHOP, ENOLINK, or EINTR error is documented. SVr4, 4.4BSD, POSIX.1\-2001 (but see VERSIONS). .TP \fBmknodat\fP() Linux 2.6.16, glibc 2.4. POSIX.1\-2008. .SH ЗАМЕЧАНИЯ В протоколе, на котором работает NFS, есть множество недоработок. Некоторые из них влияют на \fBmknod\fP() и \fBmknodat\fP(). .SH "СМ. ТАКЖЕ" \fBmknod\fP(1), \fBchmod\fP(2), \fBchown\fP(2), \fBfcntl\fP(2), \fBmkdir\fP(2), \fBmount\fP(2), \fBsocket\fP(2), \fBstat\fP(2), \fBumask\fP(2), \fBunlink\fP(2), \fBmakedev\fP(3), \fBmkfifo\fP(3), \fBacl\fP(5), \fBpath_resolution\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства был сделан aereiae , Alexey , Azamat Hackimov , Dmitriy S. Seregin , Dmitry Bolkhovskikh , ITriskTI , Max Is , Yuri Kozlov , Иван Павлов и Малянов Евгений Викторович . .PP Этот перевод является бесплатной документацией; прочитайте .UR https://www.gnu.org/licenses/gpl-3.0.html Стандартную общественную лицензию GNU версии 3 .UE или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ. .PP Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на .MT man-pages-ru-talks@lists.sourceforge.net .ME .