Przykład mknod w c

Przykład mknod w c

Nazwana rura czasami nazywana FIFO, jest sposobem na interakcję między procesami w obliczeniach. Jest to wersja klasycznego pojęcia rur Linux. Tradycyjna rura jest „bezimienna” i trwa tylko tak długo, jak procedura. Z drugiej strony, nazwana rura może trwać tak długo, jak system jest działający, nawet jeśli proces nie jest już aktywny. Jeśli nie jest już wymagane, można go usunąć. Nazwana rura zwykle pojawia się jako plik, a procesy łączą się z nią w celu interakcji między procesami.

Plik FIFO to rodzaj lokalnego pliku pamięci, który umożliwia dwa lub więcej procesów na interakcję. Główną wadą rur jest to, że można je wykorzystać tylko jeden proces, który może mieć zarówno czytelników, jak i pisarzy lub procesy, które korzystają z tej samej listy deskryptora plików; W rezultacie rury mają poważną wadę: nie mogą przekazywać danych w różnych procesach, które nie są powiązane. To dlatego, że nie udostępniają tabeli deskryptora pliku. Jeśli jednak rury otrzymują nazwy, można je odczytać i zapisać tak jak każdy inny plik. Procesy nawet nie muszą się łączyć.

Nazwane rury to FIFO, i.mi. Po pierwsze, pierwsze rury. Skorupę można użyć do generowania FIFOS. Można je jednak wykonać za pomocą programowania C za pomocą wywołania systemowego mknod (). Opcja trybu określa uprawnienia, które będą używane, a także rodzaj wygenerowanego węzła. Powinien to być bitwe lub połączenie jednego z poniższych typów plików i uprawnień nowego węzła. Ummak procesu modyfikuje uprawnienia jak zwykle: uprawnienia wygenerowanego węzła. Jeśli mknod () uda się, zwraca zero; W przeciwnym razie zwraca -1.

Składnia

int mknod (const char *nameOfPath, tryb mody_t, dev_t dev);

Nazwa ścieżki, której używasz dla pliku, to nazwa ścieżki. Zestaw bitów opisujących typ pliku i uprawnienia do dostępu, które zamierzasz wykorzystać, jest znany jako „tryb”. S_ifdir, który służy do konstruowania katalogu, i s_ififo, który służy do ustanowienia FIFO, są jedynymi dozwolonymi typami plików. Przez większość czasu Dev jest „ignorowany."

Przykład

Po wyjaśnieniu podstawowej koncepcji i składni wywołania systemu mknod () w języku programowania C, zdefiniowaliśmy przykład zrozumienia naszego użytkownika. Wdrażamy nasz przykładowy kod w Ubuntu 20.04 system operacyjny Linux z kompilatorem GCC do wykonywania kodu i kompilacji. Użyliśmy polecenia Nano w skorupce do tworzenia pliku. Do wykonywania przykładu w języku C użyliśmy „.rozszerzenie pliku c ”.

Wykonajmy wymienione poniższe polecenie w konsoli Ubuntu 20.04 system operacyjny Linux do tworzenia plików.

$ nano w.C

W naszym przypadku nazwa pliku to „w.c ”, możesz to również zmodyfikować. Teraz plik zostanie utworzony i zostanie otwarty w Edytorze GNU. Musisz napisać skrypt pokazany na poniższym obrazku.

Skrypt można zmodyfikować zgodnie z twoją pracą, ale w tym celu musisz w pełni zrozumieć ten podstawowy przykład. Domyślnym deskryptorem pliku programu do pisania komunikatów ostrzegawczych jest sterowanie, często znane jako błąd standardowy. Błąd jest drukowany na ekranie wyjściowym lub terminalu okiennym za pomocą sterowania. Sterowanie było jednym z wyników poleceń, podobnych do stdout, który jest często rejestrowany gdzie indziej. S_IRURSR to stała makro poxu znaleziona w SYS/STAT. H. Bit uprawnienia do odczytu przez użytkownika jest tym, co się nazywa. Prefiks S_ RUSR może odnosić się do statusu, takiego jak odczyt użytkownika. S_IRURSR to stała makro poxu znaleziona w SYS/STAT. H. Bit dostępu do odczytu użytkownika jest tym, co się nazywa. Prefiks S_ RUSR może odnosić się do statusu, takiego jak odczyt użytkownika. Chcemy zapewnić użytkownikowi odczyt i dostęp do zapisu w tej sytuacji. W rezultacie ustawiamy tryb na s irusr | S iwusr | S ififo. Dev jest weryfikowany, czy typem plik jest s_ifchr lub s_ifblk; Jest to jednak pominięte.

W rezultacie użyliśmy 0 jako parametru. Metoda Perror () zwraca standardowy komunikat o błędzie opisujący najnowszy błąd napotkany podczas wywoływania funkcji systemu lub biblioteki. Po napisaniu i zrozumieniu skryptu musisz zamknąć plik i po prostu wrócić do konsoli. Wykonajmy poniższe polecenie w Ubuntu 20.04 Konsola systemu operacyjnego Linux do kompilacji skryptów i wykonania.

$ gcc w.C
$ ./A.na zewnątrz

Patrząc na powyższy obraz, możesz łatwo określić, że nie pojawia się żaden błąd podczas kompilacji. Oczekiwane wyjście można również zobaczyć na ekranie.

Wniosek

W tym artykule dotyczyło połączenia systemowego Mknod () w języku programowania C. Staraliśmy się jak najlepiej oświecić cię w podstawowym użyciu wywołania systemu mknod (). Składnia wywołania systemowego mknod () została wyjaśniona w celu zrozumienia użytkowników. Przykład użyty w tym przewodniku jest bardzo prosty, a nowicjusze użytkownicy mogą również zrozumieć w pierwszym miejscu. Mam nadzieję, że ten artykuł poprowadzi Cię za każdym razem, gdy spróbujesz użyć połączenia systemowego Mknod () w języku programowania C.