mkfifo(3) Library Functions Manual mkfifo(3) NAZWA mkfifo, mkfifoat - tworzy specjalny plik FIFO (potok nazwany) BIBLIOTEKA Standardowa biblioteka C (libc, -lc) SKLADNIA #include #include int mkfifo(const char *path, mode_t mode); #include /* Definicja stalych AT_* */ #include int mkfifoat(int dirfd, const char *path, mode_t mode); Wymagane ustawienia makr biblioteki glibc (patrz feature_test_macros(7)): mkfifoat(): Od glibc 2.10: _POSIX_C_SOURCE >= 200809L Przed glibc 2.10: _ATFILE_SOURCE OPIS mkfifo() tworzy specjalny plik FIFO o nazwie path. mode okresla uprawnienia FIFO. Sa one modyfikowane przez umask procesu, w standardowy sposob: uprawnieniami tworzonego pliku beda (mode & ~umask). Specjalny plik FIFO jest podobny do potoku, z ta roznica, ze jest tworzony w inny sposob. Zamiast byc anonimowym kanalem komunikacji, specjalny plik FIFO pojawia sie w systemie plikow po wywolaniu mkfifo(). Po utworzeniu specjalnego pliku FIFO w ten sposob, dowolny proces moze go otworzyc do odczytu lub zapisu, w ten sam sposob, jak zwykly plik. Jednak musi byc otwarty na obu koncach rownoczesnie, aby dalo sie na nim przeprowadzac operacje wejscia lub wyjscia. Otwarcie FIFO do odczytu zwykle blokuje do momentu, az jakis inny proces nie otworzy tego samego FIFO do zapisu i na odwrot. Opis nieblokujacej obslugi specjalnych plikow FIFO zawarto w fifo(7). mkfifoat() Wywolanie systemowe mkfifoat() operuje w dokladnie taki sam sposob jak mkfifo(), z wyjatkiem roznic opisanych tutaj. Jesli sciezka path jest wzgledna, jest to interpretowane w odniesieniu do katalogu do ktorego odnosi sie deskryptor pliku dirfd (zamiast w odniesieniu do biezacego katalogu roboczego procesu wywolujacego, jak w stosunku do sciezek wzglednych robi to mkfifo()). Jesli path jest wzgledna a dirfd ma wartosc specjalna AT_FDCWD, to path jest interpretowana w odniesieniu do biezacego katalogu roboczego procesu wywolujacego (jak mkfifo()). Jesli sciezka path jest bezwzgledna, to dirfd jest ignorowane. Wiecej informacji o potrzebie wprowadzenia mkfifoat() mozna znalezc w podreczniku openat(2). WARTOSC ZWRACANA Po pomyslnym zakonczeniu mkfifo() i mkfifoat() zwracaja zero. Po bledzie zwracane jest -1 ustawiane errno wskazujac blad. BLEDY EACCES Jeden z katalogow w sciezce path nie zezwala na uprawnienie przeszukania (wykonania). EBADF (mkfifoat()) path jest wzgledna, lecz dirfd nie jest ani AT_FDCWD, ani prawidlowym deskryptorem pliku. EDQUOT Wyczerpano przydzial blokow dysku lub i-wezlow uzytkownika w systemie plikow. EEXIST path juz istnieje. Obejmuje to przypadek, gdy path jest dowiazaniem symbolicznym, prawidlowym lub wiszacym. ENAMETOOLONG Calkowity rozmiar path jest wiekszy od PATH_MAX albo jakas pojedyncza skladowa sciezki ma dlugosc wieksza od NAME_MAX. W systemie GNU nie ma narzuconego limitu na dlugosc calej sciezki, ale niektore systemy plikow moga stosowac limity dotyczace skladowej sciezki. ENOENT Skladowa path, ktora powinna byc katalogiem nie istnieje lub jest wiszacym dowiazaniem symbolicznym. ENOSPC W katalogu lub systemie plikow brak miejsca na nowy plik. ENOTDIR Skladowa path, ktora powinna byc katalogiem, w rzeczywistosci katalogiem nie jest. ENOTDIR (mkfifoat()) path jest wzgledna a dirfd jest deskryptorem pliku odnoszacym sie do pliku zamiast do katalogu. EROFS path odnosi sie do systemu plikow tylko do odczytu. ATRYBUTY Informacje o pojeciach uzywanych w tym rozdziale mozna znalezc w podreczniku attributes(7). +---------------------------+--------------------------+---------------+ |Interfejs | Atrybut | Wartosc | +---------------------------+--------------------------+---------------+ |mkfifo(), mkfifoat() | Bezpieczenstwo watkowe | MT-bezpieczne | +---------------------------+--------------------------+---------------+ WERSJE Zaimplementowane za pomoca mknodat(2). STANDARDY POSIX.1-2008. HISTORIA mkfifo() POSIX.1-2001. mkfifoat() glibc 2.4. POSIX.1-2008. ZOBACZ TAKZE mkfifo(1), close(2), open(2), read(2), stat(2), umask(2), write(2), fifo(7) TLUMACZENIE Tlumaczenie niniejszej strony podrecznika: Michal Kulach Niniejsze tlumaczenie jest wolna dokumentacja. Blizsze informacje o warunkach licencji mozna uzyskac zapoznajac sie z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje sie ZADNEJ ODPOWIEDZIALNOSCI. Bledy w tlumaczeniu strony podrecznika prosimy zglaszac na adres listy dyskusyjnej . Linux man-pages 6.17 8 lutego 2026 r. mkfifo(3)