WYŁĄCZ SYSTEM WYKOŃCZENIA W C

WYŁĄCZ SYSTEM WYKOŃCZENIA W C

Kiedy proces opracowuje proces dziecka, czasami ważne jest, aby proces nadrzędny poczekał, aż dziecko go ukończy przed kontynuowaniem. Właśnie to osiągnie funkcja systemu Wait ().

Oczekiwanie powoduje, że rodzic czeka, aż dziecko zmieni swój stan. Zmiana statusu może wynikać z zakończenia procesu dziecka, zatrzymania sygnału lub wznowienia sygnału. W niektórych okolicznościach, gdy proces dziecka opuszcza lub zmienia stan, proces nadrzędny powinien zostać powiadomiony o zmianie dziecka w stanie lub stanu zakończenia. W tym przypadku proces nadrzędny używa funkcji takich jak Wait (), aby zapytać o aktualizację w stanie procesu dziecka.

Wait () zawiesza proces dzwoniącego, aż system otrzyma informacje o statusie zakończenia dziecka. Wait () zwraca natychmiast, jeśli system ma już informacje o stanie na zakończonym procesie dziecka po wywołaniu. Jeśli proces dzwoniącego odbiera sygnał z działaniem, aby uruchomić moduł obsługi sygnału lub zakończyć proces, Wait () jest również zakończony.

Funkcja systemu WaitPid () zatrzymuje bieżący proces, dopóki argument PID nie określa dziecka ze zmieniony stan. WaitPid () czeka wyłącznie na rozwiązanie dzieci domyślnie; Jednak to zachowanie można zmienić. Wezwanie systemowe Wait () akceptuje tylko jeden parametr, który zawiera informacje i aktualizacje procesu. Jeśli nie dbasz o status wyjścia procesu dzieci i zależy tylko na uczynie rodzica czekającym na dziecko, użyj NULL jako wartości. W tym przewodniku rozwinęmy przykład zrozumienia wywołania systemu Wait () w programowaniu C.

Wymagania wstępne

  • Każdy wybrany system operacyjny. Używamy Ubuntu 20.04 system operacyjny Linux.
  • Dostęp użytkownika root
  • Kompilator GCC zainstalowany i skonfigurowany

Przykład do skomplikowanego systemu oczekiwania w c w c

Otwórz terminal i sprawdź, czy kompilator GCC jest zainstalowany, czy nie. Jeśli nie jest zainstalowany, użyj dołączonego polecenia:

$ Sudo apt instal gcc

Na Ubuntu 20.04 System, musisz najpierw utworzyć nowy plik z .Rozszerzenie C. Aby to osiągnąć, przejdź do katalogu domowego i wygeneruj nowy pusty plik zatytułowany „Wait1”. Możesz także użyć polecenia Nano na terminalu, aby to zrobić.

$ nano Wait1.C

Po utworzeniu „Wait1.plik C ”, otworzy się w edytorze tekstu GNU w systemie Linux i wklei do niego poniższy kod. Następnie zapisz i wyjdź z programu.

Plik nagłówka C/C ++ to punkt wejścia kodu do wielu stałych, typów i funkcji POSIX OS API. Kilka podstawowych rodzajów pochodnych jest zawartych w nagłówku i powinno być wykorzystywane tam, gdzie to możliwe. to plik nagłówka, który zawiera informacje potrzebne do uwzględnienia procedur wejściowych/wyjściowych w naszym programie. Symboliczne stałe do użycia z DaitPid są zdefiniowane w . W programie użyliśmy również wywołania systemu widelców.

Wywołanie systemowe Fork () służy do rozpoczęcia nowego procesu, znanego jako proces dziecięcy, który działa równolegle z procesem wywołującym widelec (), który jest procesem nadrzędnym. Oba procesy wdroży następną instrukcję po wywołaniu systemu Fork () po ustaleniu nowego procesu dziecka. Proces dziecka udostępnia ten sam komputer „program”, rejestry procesora i otwierają pliki jako jego rodzic. Zwraca wartość całkowitą bez parametrów. Proces rozpoczyna się od drukowania „przed widelcem.”Następnie, używając wywołania systemu Fork (), tworzony jest proces dziecięcy.

Wezwanie systemowe Wait () jest wprowadzane do sekcji nadrzędnej kodu. W rezultacie proces nadrzędny jest zawieszony, gdy tylko procesor rozpocznie wykonywanie rodzica, ponieważ początkowa instrukcja czeka (NULL). W rezultacie proces dziecka działa najpierw, a wszystkie linie wyjściowe dotyczą procesu dziecka. Null in Wait () System wywołuje, że nie będziemy wiedzieć o stanie przejścia procesu dziecka. Teraz ponownie, zacznij swój terminal. W Ubuntu 20.04, użyj instrukcji GCC poniżej, poprzedzona nazwą pliku.

$ GCC Wait1.C

Teraz uruchom kod za pomocą następującego polecenia przymocowanego w terminalu.

$ ./A.na zewnątrz

Jak się już wyjaśniono, identyfikator rodzica i dzieci procesów zostanie wyświetlony za pomocą wywołania systemu oczekiwania.

Wniosek

W tym artykule pokazano użycie połączenia systemowego Wait () w programowaniu C. Wdrożyliśmy jeden z przykładów, aby pokazać pomyślne wdrożenie wywołania systemu Wait (). Cały kod jest również szczegółowo opisany dla zrozumienia użytkowników. Mam nadzieję, że z łatwością zaimplementujesz i użyjesz wywołania systemu Wait (), gdy jest to wymagane.