Provided by: manpages-ru-dev_4.18.1-1_all bug

ИМЯ

       mkfifo, mkfifoat - создают специальный файл очереди FIFO (именованный канал)

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <sys/types.h>
       #include <sys/stat.h>

       int mkfifo(const char *pathname, mode_t mode);

       #include <fcntl.h>           /* определения констант AT_* */
       #include <sys/stat.h>

       int mkfifoat(int dirfd, const char *pathname, mode_t mode);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       mkfifoat():
           Since glibc 2.10:
               _POSIX_C_SOURCE >= 200809L
           Before glibc 2.10:
               _ATFILE_SOURCE

ОПИСАНИЕ

       mkfifo()   makes  a  FIFO  special  file  with  name  pathname.  mode specifies the FIFO's
       permissions.  It is modified by the process's umask in the usual way: the  permissions  of
       the created file are (mode & ~umask).

       Специальный  файл  FIFO  подобен  каналу,  за  исключением  того,  что он создаётся другим
       способом. Вызов mkfifo() вместо безымянного канала взаимодействия создаёт специальный файл
       FIFO, расположенный в файловой системе.

       После  создания специального файла  FIFO, любой процесс может открывать его для чтения или
       записи, как если бы он открывал обычный  файл.  Однако  прежде  чем  вы  сможете  что-либо
       сделать,  его  необходимо  открыть  с обоих концов, притом одновременно. Открытие FIFO для
       чтения обычно блокируется, пока какой-нибудь другой процесс не откроет его для  записи,  и
       наоборот.  Описание  работы со специальными файлами FIFO в неблокирующем режиме смотрите в
       fifo(7).

   mkfifoat()
       Функция mkfifoat() работает также как как  mkfifo(),  за  исключением  случаев,  описанных
       здесь.

       Если  в  pathname  задан  относительный  путь,  то  он считается относительно каталога, на
       который ссылается файловый дескриптор dirfd (а не относительно текущего рабочего  каталога
       вызывающего процесса, как это делается в mkfifo(3)).

       Если  в pathname задан относительный путь и dirfd равно специальному значению AT_FDCWD, то
       pathname рассматривается относительно текущего рабочего каталога вызывающего процесса (как
       mkfifo(3)).

       Если в pathname задан абсолютный путь, то dirfd игнорируется.

       See openat(2)  for an explanation of the need for mkfifoat().

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On  success mkfifo()  and mkfifoat()  return 0.  On error, -1 is returned and errno is set
       to indicate the error.

ОШИБКИ

       EACCES Один из каталогов содержащихся в pathname не позволяет  выполнить  поиск,  так  как
              правами запрещено исполнение.

       EBADF  (mkfifoat())   pathname  is relative but dirfd is neither AT_FDCWD nor a valid file
              descriptor.

       EDQUOT Исчерпана пользовательская квота на дисковые блоки или иноды файловой системы.

       EEXIST pathname уже существует. В этом случае  pathname  может  быть  символьной  ссылкой,
              повисшей или нет.

       ENAMETOOLONG
              Если  длина  полного  имени  файла (включая путь)  pathname больше чем PATH_MAX или
              длина имени файла больше чем NAME_MAX. В общем случае в  системах,  соответствующих
              стандарту  GNU,  отсутствует  ограничение  на  длину  полного  имени  файла, однако
              некоторые файловые системы могут  устанавливать  ограничение  на  длину  отдельного
              компонента.

       ENOENT Один  из  каталогов  в  pathname  не  существует  или  является повисшей символьной
              ссылкой.

       ENOSPC В каталоге или файловой системе закончились места для новых файлов.

       ENOTDIR
              Компонент пути, использованный как каталог в pathname, в  действительности  таковым
              не является.

       ENOTDIR
              (mkfifoat())   pathname  is  a  relative  pathname  and  dirfd is a file descriptor
              referring to a file other than a directory.

       EROFS  pathname указывает на файловую систему, доступную только для чтения.

ВЕРСИИ

       mkfifoat()  was added in glibc 2.4.  It is implemented using mknodat(2),  available  since
       Linux 2.6.16.

АТРИБУТЫ

       Описание терминов данного раздела смотрите в attributes(7).

       ┌───────────────────────────────────────────────────────┬──────────────────────┬──────────┐
       │ИнтерфейсАтрибутЗначение │
       ├───────────────────────────────────────────────────────┼──────────────────────┼──────────┤
       │mkfifo(), mkfifoat()                                   │ Безвредность в нитях │ MT-Safe  │
       └───────────────────────────────────────────────────────┴──────────────────────┴──────────┘

СТАНДАРТЫ

       mkfifo(): POSIX.1-2001, POSIX.1-2008.

       mkfifoat(): POSIX.1-2008.

СМ. ТАКЖЕ

       mkfifo(1), close(2), open(2), read(2), stat(2), umask(2), write(2), fifo(7)

ПЕРЕВОД

       Русский  перевод  этой страницы руководства был сделан aereiae <aereiae@gmail.com>, Alexey
       <a.chepugov@gmail.com>, Azamat Hackimov <azamat.hackimov@gmail.com>,  Dmitriy  S.  Seregin
       <dseregin@59.ru>,       Dmitry      Bolkhovskikh      <d20052005@yandex.ru>,      ITriskTI
       <ITriskTI@gmail.com>, Max Is <ismax799@gmail.com>, Yuri Kozlov <yuray@komyakino.ru>,  Иван
       Павлов <pavia00@gmail.com> и Малянов Евгений Викторович <maljanow@outlook.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если  вы  обнаружите  ошибки  в  переводе этой страницы руководства, пожалуйста, отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.