Funkcja Mkfifo C

Funkcja Mkfifo C
„Niestandardowy plik FIFO o nazwie nazwy pliku jest tworzony przez funkcję MKFIFO. Plik, który zachowuje się jak rura, jest nazywany FIFO lub nazwą rurą. Do pisania jedna operacja otwiera FIFO, a do czytania, inna. Aby otworzyć nazwaną rurę, możemy skorzystać z funkcji biblioteki „mkfifo ()”. Nazwa ścieżki FIFO i trybu FIFO to dwa parametry, które akceptuje funkcja „mkfifo ()”. Uprawnienia pliku są ustawiane przy użyciu parametru trybu; Aby uzyskać więcej informacji, zobacz przypisanie uprawnień do plików. Typowa wartość zwracana z Mkfifo to 0, co wskazuje na sukces. W tym przewodniku szczegółowo wyjaśnimy tę koncepcję i zbadamy tutaj przykład, w którym użyjemy tej funkcji „mkfifo ()” i zapiszymy w jednym pliku i odczytała ją w innym pliku."

Składnia
int mkfifo (const char *ścieżka, tryb mody_t);

Przykład
Wykonamy ten przykład na Ubuntu 20.04. Najpierw instalujemy kompilator GCC, a następnie otwieramy edytor tekstu Ubuntu 20.04 i umieść trochę kodu. Utworzymy tutaj dwa różne pliki, a następnie odczytamy/zapisz dane do tych plików za pomocą funkcji „mkfifo ()” w programowaniu C. Aby utworzyć kod C, musimy umieścić pliki nagłówka. „Stdio. H ”plik nagłówka jest tutaj, który jest standardowym wejściem/wyjściem, który zawiera informacje wejściowe/wyjściowe. Mamy „ciąg. H ”plik nagłówka, a ten plik nagłówka jest używany tutaj dla funkcji ciągów. Wtedy mamy „unistd. H ”plik nagłówka, który jest wykorzystywany do dostępu do interfejsu API. „Fcntl. h ”jest używany do sterowania plikiem i„ SYS/STAT.H ”obejmuje elementy konstrukcyjne, które ułatwiają poznanie właściwości pliku.

Uwzględniamy także „SYS/Type.H ”plik nagłówka. Używamy funkcji „main ()” po tych plikach nagłówka, a ta funkcja deklaruje typ danych jako „int”. Below this, we declare the integer “int” and name it “fd”. Następnie deklarujemy i inicjujemy „char” o nazwie „Myfifo” i inicjujemy go za pomocą „/tmp/FIFO”. Teraz mamy funkcję „mkfifo ()”, w której przekazujemy dwa parametry. Pierwszy parametr to „Myfifo”, ​​a drugi parametr to „0666” tutaj. Pierwszy parametr to nazwa ścieżki, a drugi to tryb.

Następnie deklarujemy dwie tablice nazwy „ARR1 []” i „ARR2 []” rozmiaru „80”. Używamy tutaj pętli „while ()” i wkładamy w nią „1”. Wewnątrz pętli, mamy różne stwierdzenia. Używamy „Open ()” do czytania lub zapisywania pliku. Stawiamy ścieżkę pliku jako pierwszy parametr, a następnie wykorzystujemy flagę tutaj jako drugi parametr, który jest „O_WRONLY”. Ta flaga „O_Wronly” jest tutaj używana, co oznacza, że ​​otwieramy ten plik tylko do pisania. Funkcja „fgets ()” jest tutaj do czytania znaków.

Następnie mamy funkcję „Write ()”, która jest używana do pisania danych z bufora zadeklarowanego przez użytkownika, a następnie zamykania tego pliku za pomocą funkcji „Close ()”. Po tym znów mamy funkcję „Open ()”, ale tym razem korzystamy z flagi „0_rdonly”, co oznacza, że ​​ten czas plik jest otwarty dla tylko do odczytu. Mamy również „Read ()”, który jest wykorzystywany tylko do odczytu danych, które wcześniej zostały zapisane w tym pliku. Następnie używamy „printf” do renderowania danych na ekranie wyjściowym i ponownie zamykamy ten plik, wykorzystując funkcję „Close ()”. Musimy zamknąć plik, który otworzyliśmy. Tutaj zamykamy wspornik pętli while i umieszczamy pod tym oświadczenie „Return 0”.

Tworzymy tutaj drugi kod C, umieszczając niektóre wiersze kodu. W tym kodzie używamy tych samych plików nagłówka, które wykorzystaliśmy w powyższym kodzie. Następnie mamy funkcję „main ()” i w środku deklarujemy „int” jako „fd1” i „char” jako „myfifo”. „Mkfifo ()” jest również wykorzystywane tutaj w taki sam sposób, jak użyliśmy go w powyższym kodzie. Tutaj mamy dwie „char” tablicy nazwy „STR1” i „STR2” i przypisują rozmiar jako „80”. Używana jest funkcja „Open ()”, a flaga „0_rdonly” służy do wskazania, że ​​plik jest otwarty dla dostępu tylko do odczytu. Mamy funkcję o nazwie „Read ()”, która jest używana wyłącznie do odczytu danych.

Następnie renderujemy dane na ekranie wyjściowym za pomocą „PrintF” i zamykamy ten plik za pomocą funkcji „Close ()”. Ścieżka pliku jest pierwszym parametrem, a drugim parametrem jest flaga, która w tym przypadku to „O_WRONLY.„Otwieramy ten plik do pisania tylko za pomocą flagi„ O_Wronly ”w tym przypadku. Tutaj znaki można odczytać za pomocą funkcji „fgets ()”. Funkcja „Write ()” służy do zapisywania danych z bufora, które użytkownik zadeklarował przed użyciem funkcji „Close ()” w celu zamknięcia pliku.

Teraz otrzymujemy dane wyjściowe, otwierając jednocześnie dwa terminale i wykonując jednocześnie polecenie na obu terminach. Najpierw opracowujemy oba pliki na osobnych terminach. Na pierwszym terminalu uruchamiamy polecenie podane poniżej, a następnie przechodzimy do drugiego terminalu.

Na drugim terminalu umieszczamy to polecenie do opracowania drugiego pliku kodu C. Po udanej kompilacji obu poleceń na różnych terminach, wykonamy oba kody.

Do wykonania umieszczamy podane polecenie na pierwszym terminalu; Nic nie wyświetli się tutaj.

Teraz, na drugim terminalu, musimy wykonać ten kod, pisząc to polecenie, które jest pokazane tutaj. Również tutaj nic nie jest wyświetlane.

Na pierwszym terminalu napisz „Hello”, naciśnij Enter i otwórz drugi terminal.

Ten „Hello” jest również wyświetlany na drugim terminalu, który napisaliśmy na pierwszym terminalu.

Tutaj możesz zobaczyć wyjścia obu plików na obrazach, które podano poniżej.

Wniosek

Prezentujemy ten przewodnik, aby pokazać, jak działa funkcja „mkfifo ()” w programowaniu C. Wyjaśniliśmy tutaj tę funkcję „mkfifo ()”, a także pokazaliśmy tutaj przykład, w którym zastosowaliśmy tę funkcję „mkfifo ()”. Zapewniliśmy tutaj również dane wyjściowe, więc łatwo zobaczysz, jak użyć tej funkcji „mkfifo ()” w c. Mamy nadzieję, że ten przewodnik poprawi Twoją wiedzę na temat funkcji programowania C.