table of contents
- bookworm 4.18.1-1
- bookworm-backports 4.24.0-2~bpo12+1
- testing 4.24.0-2
- unstable 4.24.0-2
mkfifo(3) | Library Functions Manual | mkfifo(3) |
ИМЯ¶
mkfifo, mkfifoat - создают специальный файл очереди FIFO (именованный канал)
БИБЛИОТЕКА¶
Стандартная библиотека языка C (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);
mkfifoat():
Начиная с glibc 2.10:
_POSIX_C_SOURCE >= 200809L
До 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 (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.
Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.
5 февраля 2023 г. | Справочные страницы Linux 6.03 |