Jak korzystać z wywołania systemu ReadV w c

Jak korzystać z wywołania systemu ReadV w c
ReadV () System Call Call Count Count od dokumentu udostępnionego za pośrednictwem deskryptora dokumentu FD zaczepił się do kilku buforów wektora. Wektorowe we/wy jest procesem, w którym samotne połączenie systemowe zapisuje wektor buforów z pojedynczego przepływu danych lub odczytów z wektora buforów z powodu wyłącznego przepływu danych. Metoda wywołania systemu ReadV () jest podobna do Read (2); Poza tym wypełnia kilka buforów. System wywołany przez ReadV () powróci do sumowania bajtów odczytanych, gdy się powiedzie; -1 jest przywrócone w przypadku błędu. W tym artykule obejmie temat wywołania systemu ReadV () w Ubuntu 20.04 System Linux. Upewnij się, że mają przywileje sudo, aby uniknąć jakichkolwiek niedogodności.

Na początku zaloguj się z systemu operacyjnego Linux i otwórz terminal konsoli linii poleceń. Istnieją dwa sposoby, aby to otworzyć. Pierwszy używa klucza skrótu „Ctrl+alt+t”, gdy jesteś na komputerze stacjonarnym systemu Linux, a drugi używa obszaru aktywności. Kliknij pasek menu aktywności podświetlony w lewym górnym rogu ekranu stacjonarnego. Pasek wyszukiwania pojawi się. Dotknij go i napisz w nim „Terminal”. Naciśnij klucz „Wprowadź”, aby kontynuować. Następnie zostanie otwarta skorupa końcowa. Po otwarciu terminalu konsolowego nadszedł czas, aby utworzyć plik o rozszerzeniu typu „TXT” do prostego użycia. Możemy użyć instrukcji „dotyk” i nazwy pliku, e.G., test.txt, aby to utworzyć. Naciśnij przycisk „Enter” i zostanie utworzony plik.

$ Touch Test.tekst

W katalogu domowym systemu Linux można znaleźć niedawno utworzony plik „Testuj.tekst". Dwukrotnie się na to, aby go otworzyć i wpisać w nim poniżej przedstawione dane. Zapisz go, naciskając „Ctrl+S” lub po prostu klikając przycisk „Zapisz”. Zamknij go po aktualizacji za pomocą znaku krzyżowego po prawej stronie pliku.

Wracając do terminalu, możesz również sprawdzić dane z tego pliku za pomocą bardzo prostego polecenia „CAT” jako poniżej. Wyjście pokazuje zawartość pliku „Test.tekst".

Test $ CAT.tekst

Teraz, aby rozpocząć pracę nad językiem C, system Linux musi mieć w nim jakiś kompilator języka C. W tym celu musisz najpierw zainstalować kompilator. Sugerujemy zainstalowanie kompilatora „GCC” za pomocą polecenia „apt” sudo jak poniżej.

$ sudo apt instal gcc

Po konfiguracji kompilatora możesz teraz poprawnie pracować nad językiem C. Po pierwsze, musimy utworzyć nowy plik z rozszerzeniem typu „C” na końcu za pomocą edytora Nano. Dlatego wypróbuj poniższe zapytanie w konsoli, aby to zrobić.

Test $ nano.C

Objaśnienie kodu

Po otwarciu edytora Nano, zapisz w nim poniższy kod języka C, aby użyć wywołania systemu ReadV w naszym systemie Linux. Po pierwsze, użyliśmy poniższych bibliotek w kodzie C, aby działały poprawnie i bez żadnych błędów. Następnie zadeklarowaliśmy główną funkcję, jak pokazano w Snap. Na samym początku głównej funkcji musimy zdefiniować dwie zmienne, „I” i „FD”. Następnie określono trzy charakterystyczne tablice typu lub mniej o nazwie „F1”, „F2” i „F3”. Następnie zadeklarowaliśmy listę typów struktury lub tablicę o nazwie „IoVEC”. Każda struktura IoVEC definiuje fragment, który byłby indywidualnym rozłącznym buforem. Następnie utworzyliśmy inną zmienną wielkości typu o nazwie „NR”. Po wszystkich deklaracjach określiliśmy proste „otwarte” wywołanie systemowe, aby otworzyć plik „Test.txt ”od jego dyrektora i przeczytaj całą jego zawartość i powróć do deskryptora pliku„ FD ”. Flaga O_RDONLY była używana do celów czytania. W następnym wierszu zadeklarowaliśmy instrukcję „jeśli”, aby sprawdzić, czy deskryptor pliku jest równy „-a”, czy nie. Jeśli jest to „-1”, będzie to przez komunikat o błędzie „Otwórz” w powłoce i zwróci 1. Poza instrukcją „If” użyliśmy deskryptorów plików do przypisania wartości do indeksów struktury. „Iov.baza ”jest wskaźnikiem pokazującym początek bufora i„ Iov.Len ”pokazuje całkowity rozmiar bufora w bajtach. Wektor wydaje się być zbiorem sekcji. Każda sekcja wektora określa lokalizację i rozmiar pamięci podręcznej bufora, na których lub na podstawie danych można zapisać lub odczytać. Wcześniej przejście do kolejnego bufora metoda ReadV () w pełni obejmuje każdy z buforów bajtów „Iov_len”. Zanim przejdzie do innej pamięci podręcznej bufora, metoda WriteV () nadal wpisuje całe bajty „Iov_len”. Począwszy od Iov [0], wcześniej Iov [1] i tak dalej, przez Iov [hrabia-1], obie operacje nadal działają w sekcjach w porządku. Następnie zadeklarowaliśmy wywołanie systemowe „ReadV”, aby odczytać deskryptor pliku i buforuje bajt „Iov” do wielkości 3.

Następnie sprawdziliśmy zwrócone bajty. Jeśli wartość zwracana wynosi „-1”, wyświetli komunikat o błędzie „ReadV”. Użyliśmy pętli „For” do wydrukowania znaków plików za pośrednictwem „Iov”. Jeśli funkcja została zamknięta, wyświetli „Zamknij”. Zapisz ten kod za pomocą „Ctrl+S” i opuść plik za pomocą metody skrótu „Ctrl+x”.

Teraz skompiluj kod za pomocą polecenia GCC, jak podano poniżej.

Test $ GCC.C

Następnie uruchom polecenie wykonania, aby sprawdzić wyniki. Poniższe dane wyjściowe pokazuje zawartość w fragmentach i pokazuje również komunikaty o błędach. Pokazuje również numer indeksu dla tablicy buforu jako 0, 1 i 2.

$ ./A.na zewnątrz

Wniosek

Zakończyliśmy wszystkie podstawowe części, aby wymienić wywołanie systemu „ReadV” w Ubuntu 20.04 System Linux. Wszystkie polecenia będą działać tak samo dla innych dystrybucji Linuksa.