Wywołanie funkcji getPID w C z przykładami

Wywołanie funkcji getPID w C z przykładami
GetPid () to funkcja używana do uzyskania identyfikatora procesu procesu wywołującego tę funkcję. PID dla pierwszego procesu to 1, a następnie każdemu nowemu procesowi przypisuje się nowy identyfikator. Jest to proste podejście do zdobycia PID. Ta funkcja pomaga tylko w uzyskaniu unikalnych identyfikatorów procesów.

Funkcje używane w uzyskaniu identyfikatorów

Tutaj obecne są dwa rodzaje identyfikatorów. Jeden to obecny identyfikator procesu PID. Podczas gdy drugi jest identyfikatorem PPID procesu nadrzędnego. Obie te funkcje są wbudowanymi funkcjami zdefiniowanymi w bibliotece. Podczas uruchamiania kodu bez korzystania z tej biblioteki może powodować błąd i przestać wykonywać.

funkcja getPid () w c

Gdy powstaje jakiś proces i działa, przypisany jest unikalny identyfikator. To jest identyfikator procesu. Ta funkcja pomaga zwrócić identyfikator aktualnie wywoływanego procesu.

funkcja getPPID () w c

Ten identyfikator jest przydatny w zwracaniu procesu procesu/funkcji nadrzędnej.

Przykład 1
Zrozumienie przykładu PID w procesie w języku C. Potrzebujesz dwóch narzędzi: dowolnego edytora tekstu i terminalu Linux, na którym powinieneś uruchomić polecenia. Utwórz plik w dowolnym edytorze tekstu. Utworzyliśmy kod nazwy pliku 1.c Jak kod jest napisany w języku c, więc należy go zapisać za pomocą .Rozszerzenie C.

Dodaliśmy jedną bibliotekę. Wtedy uruchamia program główny. W programie głównym wywołujemy wbudowaną funkcję getpid (); Aby pobrać identyfikator bieżącego procesu. A zmienna jest wprowadzana i przypisana. Tak że wartość funkcji PID () była przechowywana w tej zmiennej, wówczas przyjmiemy wydruk wartości za pomocą tej zmiennej.

Teraz chcemy uruchomić zawartość tego pliku w terminalu Linux. Warunek kodu należy najpierw skompilować, a następnie wykonać. Do kompilacji stosuje się GCC. Jeśli Twój system nie ma GCC, musisz go najpierw zainstalować za pomocą polecenia sudo.

Teraz kompiluj napisany kod. Można to osiągnąć za pomocą następujące dołączone polecenie.

$ Gcc -o code1 kod1.C

Podczas gdy -o służy do otwarcia pliku zapisu w poleceniu. Następnie po -O piszemy nazwę pliku.

Po kompilacji uruchom polecenie.

$ ./Code1

Powyższy obraz pokazuje identyfikator procesu funkcji.

Przykład 2
W poprzednim przykładzie korzystamy z PID. Ale w tym przykładzie używane są zarówno PID, jak i PPID. Kod źródłowy tej funkcji jest prawie taki sam jak poprzednia. Tylko kolejne dodatek identyfikatora.

Rozważ plik, który zawiera dwie zmienne w głównym programie, które są przypisane przez identyfikatory procesu. Jeden jest bieżącym procesem, a drugi z procesu nadrzędnego. Następnie podobnie do pierwszego przykładu, wydrukuj oba identyfikatory przez ich zmienne.

Int pid_t = getpid ();
Int ppid_t = getPPID ();

Te dwa są głównymi funkcjami całego kodu. Teraz, po utworzeniu pliku, następnym krokiem jest skompilowanie i uruchomienie pliku. Kompiluj za pomocą GCC w poleceniu. Po kompilacji uruchom go na terminalu Ubuntu.

$ Gcc -o code1 kod1.C
$ ./Code1

Wyjście pokazuje, że identyfikator procesu jest wyświetlany najpierw, a następnie wyświetlany jest identyfikator procesu nadrzędnego.

Przykład 3
Wszystkie procesy działają i wykonują równolegle. Procesy rodzica i dziecka wykonują wszystkie pozostałe linie wspólnie. Oba dają wyniki na raz. Ale używając widelca w kodzie C, jeśli ta funkcja zwraca wartość mniejszą niż 0, oznacza to, że wywołanie funkcji zostało zakończone.

Rozważ nowy plik z dwiema bibliotekami w odpowiednim nagłówku. Tutaj stosuje się warunek, w którym zastosowaliśmy instrukcję „IF-Else”. W programie głównym stwierdzono, że jeśli wartość widelca ma wartość -ive, wyświetli komunikat, że identyfikator procesu zostanie nie powiódł i nie zostanie uzyskany. Jeśli sytuacja jest fałszywa, wówczas kompilator przejdzie do drugiej części warunku. W tej części identyfikator procesu jest uzyskiwany, a następnie wyświetlimy ten identyfikator procesu i wyświetlimy wiadomość, że identyfikator procesu jest uzyskiwany. Tutaj zacytujemy instrukcję IF-Else kodu źródłowego.

Teraz ponownie skompiluj kod, a następnie uruchom go.

./Code2

Dane wyjściowe pokazuje, że część else została wykonana i wydrukuje identyfikator procesu, a następnie wyświetli komunikat PID.

Przykład 4

To kolejny przykład wyjaśniania tej samej koncepcji. Funkcja Fork () zwraca dwie różne wartości. W przypadku procesu dziecka wartość wynosi 0, co ma zostać zwrócone. Jednocześnie wartością w przypadku procesu nadrzędnego jest identyfikatorem procesu nowego dziecka.

W tym przykładzie stosuje się ten sam warunek IF_ELSE. Ale tutaj stosowane są dwa warunki. Porównanie PID, która jest mniejsza niż zero, a druga równa się zero. Jeśli PID jest mniejszy niż zero, wyświetli komunikat o błędzie. Podczas gdy jeśli PID równa się zero, oznacza to, że jest to proces dziecięcy, a inna część pokazuje, że jeśli PID jest większy niż zero, jest to proces nadrzędny.

Teraz kompiluj i uruchom kod.

$ gcc -o code3 kod3.C
$./Code3

Ze wyjścia widzimy, że część else jest wydrukowana jako pierwsza oznacza, że ​​identyfikator procesu jest większy niż 0.

Przykład 5
W porządku, jest to ostatni przykład, w którym próbowaliśmy podsumować wszystkie kody opisane powyżej, aby wyjaśnić działanie tej funkcji. Możemy również użyć pętli z funkcjami Fork (), aby używać funkcji getPID (). Możemy użyć pętli do tworzenia wielu procesów dziecięcych. Tutaj musimy użyć wartości 3 w pętli.

Ponownie musimy użyć instrukcji warunkowej w kodzie. Pętla rozpoczyna się od jednego i iteruj do 3r & D zakręt.

Teraz zapisz plik i wykonaj go. Istnieje kolejna prosta metoda kompilacji i wykonania kodu tylko w jednym poleceniu. To jest.

$ GCC Codes5.c -o s & ./kod5

Teraz zmierzanie w kierunku wyjścia kodu. ID procesu nadrzędnego jest identyczny we wszystkich procesach dziecka. Oznacza to, że wszystkie te procesy należą do jednego rodzica. Procesy te są wykonywane po drugim, ponieważ pętla jest ograniczona do 3. Zostaną wykonane tylko 3 iteracje.

Wniosek

Ten artykuł zawiera podstawową wiedzę i działanie funkcji getpid () w poleceń Linux. Unikalny identyfikator jest przypisany do każdego procesu za pośrednictwem tej funkcji.