Odczytanie System Call In C

Odczytanie System Call In C

Wywołanie systemowe to metoda komunikacji oprogramowania z systemem operacyjnym. Gdy oprogramowanie wykonuje połączenie systemowe, wysyła żądanie do jądra systemu operacyjnego. Aby odczytać za pomocą deskryptora pliku, możesz użyć funkcji systemu Read (). Każdy proces ma swoją osobistą tabelę deskryptorów plików w systemie operacyjnym. Jedyną różnicą między Read () a zapisem () jest to, że odczyt () odczytuje dane z pliku, o którym mowa deskryptor pliku. Czas odczytu pliku jest aktualizowany po udanym czytaniu ().

Składnia

# ssize_t odczyt (int fd, const void *buf, size_t Count);

Deskryptor pliku jest pierwszym argumentem. Bufor jest drugim argumentem. Wreszcie trzecia opcja określa, ile bajtów rozważasz czytanie. Bajty to tylko wolumin danych do kopiowania, a bufor jest adresem przestrzeni pamięci, w której dane mają zostać zapisane. Wynik powrotu reprezentuje ilość danych zapisanych w bajtach; Jeśli różni się od bajtów, wydaje się, że coś jest nie tak. Jeśli wartość jest ujemna, wywołanie systemowe przerwie.

Wymagania wstępne

Kompilator GCC jest niezbędny do skompilowania kodu zawierającego wywołanie systemowe odczyt (). Aby wykonać i złożyć kod językowy C, będziemy musieli zainstalować pakiet kompilatora na naszym komputerze. Więc będziemy musieli również zainstalować kompilator GCC. Możesz zainstalować go z przedstawionym poniżej poleceniem w terminalu Linux, jak pokazano poniżej. Będzie się zainstalować za kilka chwil, a będziesz mógł po prostu napisać i uruchomić kody C w plikach.

Uderzając w klawisz ENTER, kompilator GCC zostanie zainstalowany. Minie kilka chwil, zanim poprosi cię o powiedzenie tak lub nie. Jeśli wybierzesz tak, rozpocznie badanie wyjścia kompilatora GCC. Wykorzystaj poniżej podważoną instrukcję, aby zainstalować GCC w swoim systemie.

$ sudo apt instal gcc

Pierwszy przykład wywołania systemowym Read () w C

Zacznijmy od Read (), aby lepiej to zrozumieć. Najpierw musisz użyć edytora GNU powłoki do wygenerowania pliku typu c. Spróbuj uruchomić proste zapytanie poniżej w terminalu.

$ nano Read1.C

Otwarcie wyżej wymienione polecenie zajmie trochę czasu, ale kiedy to zrobi, będziesz mógł go natychmiast użyć. Uruchamia Ubuntu 20.Od razu redaktor GNU 04. Edytor GNU pojawi się, jak pokazano na obrazie dołączonym poniżej. Teraz napisz wyświetlany kod w edytorze.

Zezwolenie systemowe Read () odbiera wejście użytkownika z klawiatury, która jest deskryptorem pliku jako 0 i umieszcza go w buforze „Buff”, który jest tylko tablicą znaków. Może odczytać tylko do 10 bajtów jednocześnie. Odczytuje się tylko pierwsze 10 liter, niezależnie od tego, ile wprowadza użytkownika. Wreszcie, używając wywołania systemu zapisu (), dane są wyświetlane w oknie.

Na wyświetlaczu drukuje te same 10 bajtów, co z bufora z deskryptora pliku 1. Powinieneś teraz skompilować kod pokazany powyżej. Musimy użyć kompilatora GCC do kompilacji kodu. Aby skompilować „Read1.plik C ”, uruchom polecenie GCC poniżej. Wróć do konsoli i napisz polecenie:

$ GCC Read1.C

Teraz musimy uruchomić ten kod za pomocą./A.Out polecenie w terminalu, jak pokazano poniżej.

$ ./A.na zewnątrz

Zgodnie z programem, dane wyjściowe jest wyświetlane na wyżej zawartym zrzucie ekranu.

Drugi przykład wywołania systemowym Read () w C

Nie możesz przewidzieć, ile użytkownika wprowadziłby jako dane wejściowe. W rezultacie nie można użyć trzeciego argumentu do systemu zapisu (). Wynik może różnić się od tego, czego się spodziewałeś. Pamiętaj, co zwraca Read (), jeśli się powiedzie. Aby zademonstrować tę koncepcję, wykonujemy ten przykład. Teraz ponownie użyj edytora GNU powłoki, aby wygenerować plik typu C. Spróbuj uruchomić proste zapytanie poniżej w terminalu.

$ nano czytaj.C

Otwarcie wyżej wymienione polecenie zajmie trochę czasu, ale kiedy to zrobi, będziesz mógł go natychmiast użyć. Uruchamia Ubuntu 20.Od razu redaktor GNU 04. Edytor GNU pojawi się, jak pokazano na obrazie dołączonym poniżej. Teraz napisz wyświetlany kod w edytorze.

W tym kodzie używamy zmiennej NREAD do przechowywania liczby bajtów odczytanych przez wywołanie systemowe Read () w C, i używamy zmiennej w zapisu (), aby wyświetlić tę samą ilość bajtów w oknie. Powinieneś teraz skompilować kod pokazany powyżej.

Musimy użyć kompilatora GCC do kompilacji kodu. Aby skompilować „Przeczytaj.plik C ”, uruchom polecenie GCC poniżej. Wróć do konsoli i wpisz polecenie:

$ GCC Czytaj.C

Po skompilowaniu kodu uruchom ten kod za pomocą ./A.Out polecenie w terminalu, jak pokazano poniżej.

$ ./A.na zewnątrz

Zgodnie z programem, dane wyjściowe jest wyświetlane na wyżej zawartym zrzucie ekranu.

Wniosek

Aby zrozumieć koncepcję wywołania systemu Read () w Ubuntu, zbadaliśmy kilka prostych i liniowych przykładów w C. Opowiedzieliśmy również, jak skonfigurować kompilator GCC dla kompilacji kodu. Mam nadzieję, że możesz teraz po prostu użyć wywołania systemu Read (), aby zbudować kod na Ubuntu 20.04.