Scroll to navigation

mkfifo(3) Library Functions Manual mkfifo(3)

NAZWA

mkfifo, mkfifoat - tworzy specjalny plik FIFO (potok nazwany)

BIBLIOTEKA

Standardowa biblioteka C (libc, -lc)

SKŁADNIA

#include <sys/types.h>
#include <sys/stat.h>
int mkfifo(const char *pathname, mode_t mode);
#include <fcntl.h>           /* Definicja stałych AT_* */
#include <sys/stat.h>
int mkfifoat(int dirfd, const char *pathname, 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 pathname. mode określa uprawnienia FIFO. Są one modyfikowane przez umask procesu, w standardowy sposób: uprawnieniami tworzonego pliku będą (mode & ~umask).

Specjalny plik FIFO jest podobny do potoku, z tą różnicą, że jest tworzony w inny sposób. Zamiast być anonimowym kanałem komunikacji, specjalny plik FIFO pojawia się w systemie plików po wywołaniu mkfifo().

Po utworzeniu specjalnego pliku FIFO w ten sposób, dowolny proces może go otworzyć do odczytu lub zapisu, w ten sam sposób, jak zwykły plik. Jednak musi być otwarty na obu końcach równocześnie, aby dało się na nim przeprowadzać operacje wejścia lub wyjścia. Otwarcie FIFO do odczytu zwykle blokuje do momentu, aż jakiś inny proces nie otworzy tego samego FIFO do zapisu i na odwrót. Opis nieblokującej obsługi specjalnych plików FIFO zawarto w fifo(7).

mkfifoat()

Wywołanie systemowe mkfifoat() operuje w dokładnie taki sam sposób jak mkfifo(), z wyjątkiem różnic opisanych tutaj.

Jeśli ścieżka podana w pathname jest względna, jest to interpretowane w odniesieniu do katalogu do którego odnosi się deskryptor pliku dirfd (zamiast w odniesieniu do bieżącego katalogu roboczego procesu wywołującego, jak w stosunku do ścieżek względnych robi to mkfifo()).

Jeśli pathname jest względna a dirfd ma wartość specjalną AT_FDCWD, to pathname jest interpretowana w odniesieniu do bieżącego katalogu roboczego procesu wywołującego (jak mkfifo()).

Jeśli ścieżka pathname jest bezwzględna, to dirfd jest ignorowane.

Więcej informacji o potrzebie wprowadzenia mkfifoat() można znaleźć w podręczniku openat(2).

WARTOŚĆ ZWRACANA

Po pomyślnym zakończeniu mkfifo() i mkfifoat() zwracają zero. Po błędzie zwracane jest -1 ustawiane errno wskazując błąd.

BŁĘDY

Jeden z katalogów w ścieżce pathname nie zezwala na uprawnienie przeszukania (wykonania).
(mkfifoat()) pathname jest względna, lecz dirfd nie jest ani AT_FDCWD, ani prawidłowym deskryptorem pliku.
Wyczerpano przydział bloków dysku lub i-węzłów użytkownika w systemie plików.
pathname już istnieje. Obejmuje to przypadek, gdy pathname jest dowiązaniem symbolicznym, prawidłowym lub wiszącym.
Całkowita długość pathname jest większa od PATH_MAX albo jakaś pojedyncza składowa ścieżki ma długość większą od NAME_MAX. W systemie GNU nie ma narzuconego limitu na długość całej ścieżki, ale niektóre systemy plików mogą stosować limity dotyczące składowej ścieżki.
Składowa pathname, która powinna być katalogiem nie istnieje lub jest wiszącym dowiązaniem symbolicznym.
W katalogu lub systemie plików brak miejsca na nowy plik.
Składnik pathname, który powinien być katalogiem, w rzeczywistości katalogiem nie jest.
(mkfifoat()) pathname jest ścieżką względną a dirfd jest deskryptorem pliku odnoszącym się do pliku zamiast do katalogu.
pathname odnosi się do systemu plików tylko do odczytu.

ATRYBUTY

Informacje o pojęciach używanych w tym rozdziale można znaleźć w podręczniku attributes(7).

Interfejs Atrybut Wartość
mkfifo(), mkfifoat() Bezpieczeństwo wątkowe MT-bezpieczne

WERSJE

Zaimplementowane za pomocą mknodat(2).

STANDARDY

POSIX.1-2008.

HISTORIA

POSIX.1-2001.
glibc 2.4. POSIX.1-2008.

ZOBACZ TAKŻE

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

TŁUMACZENIE

Autorami polskiego tłumaczenia niniejszej strony podręcznika są: Michał Kułach <michal.kulach@gmail.com>

Niniejsze tłumaczenie jest wolną dokumentacją. Bliższe informacje o warunkach licencji można uzyskać zapoznając się z GNU General Public License w wersji 3 lub nowszej. Nie przyjmuje się ŻADNEJ ODPOWIEDZIALNOŚCI.

Błędy w tłumaczeniu strony podręcznika prosimy zgłaszać na adres listy dyskusyjnej manpages-pl-list@lists.sourceforge.net.

2 maja 2024 r. Linux man-pages 6.9.1