System System Call in C

System System Call in C
Język C wymyśla wywołanie systemu SEMCTL w systemie Linux. To wywołanie systemowe było szeroko stosowane w systemie Linux do wykonywania procesów kontrolnych określonych przez powłokę konsolową na jakimś konkretnym zestawie semaforów. Semafory są znanymi IPS szeroko stosowanymi do zapewnienia dostępu do procesów komunikacji ze sobą. Semafor może być zmienną o abstrakcyjnym typu danych do kontroli 1 zasobu dla wielu procedur. Stąd użyto tutaj wywołania systemu SEMCTL do kontrolowania zestawu semaforu. Zacznijmy od rejestracji z systemu Linux.

Otwórz aplikację konsoli z obszaru wyszukiwania. Szybki alternatywny sposób otwarcia konsoli jest „Ctrl+Alt+T”.

Przykład:

Utwórz nowy plik C w folderze domowym systemu Linux z wykorzystaniem polecenia „dotyk”. Nazwali ten plik C jako „SEMCTL.C". Możesz to wymienić tak, jak chcesz. Zapytanie jest następujące:

$ Touch Semctl.C

Edytor GNU Nano będzie używany do edycji i otwarcia pliku. Tak więc podane poniżej zapytanie zostało użyte do otwarcia „SEMCTL.plik C ”.

$ nano semctl.C

Jak pokazano na obrazie poniżej, że plik został już otwarty w edytorze. Napisz ten sam kod w pliku, aby zobaczyć działanie połączenia systemowego „semctl ()”. Plik nagłówka dla wejścia i semaforów został uwzględniony na początku pliku C. Główna metoda została zadeklarowana wraz z inną funkcją, „get_val ()”. Począwszy od głównej metody, zdefiniowaliśmy zmienną „V”, uzyskując jej wartość z funkcji get_val. Ta metoda została wywołana podczas przekazywania dwóch argumentów w parametrach. Teraz kontrola została przekazana funkcji get_val (). Ta funkcja zawiera dwa argumenty, e.G. SID jako identyfikator semaforowy i „semnum” jako numer semaforowy. Przekazane wartości 1 i 4 zostaną zapisane do tych argumentów.

Polecenie SEMCTL zostało wykorzystane w ramach funkcji, aby uzyskać bieżący zestaw semaforów za pomocą identyfikatora semaforu i numeru semaforu. Funkcja GetVal została tutaj użyta do uzyskania bieżącej wartości semaforu. Po zebraniu wartości semaforowej został zwrócony do głównej metody. Wartość została zapisana w zmiennej „V”. Ta wartość zmienna zostanie wyświetlona za pomocą instrukcji PrintF pokazanej w kodzie C. Możesz teraz zapisać ukończony kod „Ctrl+S” i zostawić go z powrotem do konsoli, wykorzystując polecenia skrótów „Ctrl+x”.

Skompilujmy „SEMCTL.plik C ”w konsoli. Użyj zalecanego kompilatora „GCC” dla tego rodzaju skomplikowanych kodów C. Kompilacja zwraca ostrzeżenie, ale nie ma potrzeby paniki. Wykonaj swój plik za pomocą „a.OUT ”polecenie. Wyjście pokazuje, że bieżąca wartość semaforu wynosi „-1”.

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

Otwórzmy ponownie plik, aby trochę się boryknęła. Otwórz go za pomocą edytora „Nano” i zdefiniuj zmienną „Max_Comps” z pewną wartością, E.G. 10. Tym razem zaktualizuj kod o pokazanym poniżej skrypcie. Zacznij od inicjalizacji głównej metody. Zawiera wywołanie funkcyjne metody comp_use (). Teraz kontrola została przekazana metodę comp_use.

Funkcja Comp_use zawiera pętlę „dla” do użycia wartości „Max_Comps” jako wartości maksymalnej do pętli „dla”. Do czasu zakończenia pętli instrukcja wydruku wyświetli numer komputera. Dostaje się i drukuje bieżącą wartość semaforu z metody „get_val”, wywołując ją tutaj. Metoda get_val została wykonana i zwróciła swoją wartość do instrukcji drukowania funkcji comp_use (), aby wyświetlić ją na ekranie. Zapisz ponownie plik kodu i zrezygnuj, aby wrócić.

Teraz musimy skompilować zaktualizowany kod z poleceniem „GCC” dla kompilacji. Po udanej kompilacji wykonaliśmy plik i uzyskaliśmy wartość semafora dla każdego komputera.

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

Wniosek:

Wezwanie systemu SEMCTL i jego działanie zostały wyraźnie wykazane w tym przewodniku z językiem C przy użyciu Ubuntu 20.04 System Linux. Mamy nadzieję, że ten artykuł pomoże ci zrozumieć i uczyć się pojęć semaforów w systemie Linux.