Ryc. 1: Basic Fork () Workflow
W tym artykule pokażę Ci, jak użyć systemu Fork (), aby stworzyć procesy dziecięce w C. Więc zacznijmy.
Fork () Składnia i wartość zwracana:
Składnia funkcji systemu Fork () jest następująca:
PID_T Fork (void);Funkcja systemu Fork () nie akceptuje żadnego argumentu. Zwraca liczbę całkowitą typu PID_T.
W przypadku sukcesu Fork () zwraca PID procesu dziecięcego, który jest większy niż 0. W procesie dziecka wartość zwracania wynosi 0. Jeśli Fork () nie powiedzie się, wówczas zwraca -1.
Prosty Fork () Przykład:
Poniżej podano prosty przykład widelec ():
#włączaćTutaj użyłem Fork () do utworzenia procesu potomnego z procesu głównego/nadrzędnego. Następnie wydrukowałem PID (identyfikator procesu) i PPID (identyfikator procesu nadrzędnego) z procesu dziecięcego i nadrzędnego. W procesie nadrzędnym oczekiwanie (NULL) jest używane do zakończenia procesu dziecka. W procesie dziecka Exit () jest używany do zakończenia procesu dziecka. Jak widać, PID procesu nadrzędnego jest PPID procesu dziecięcego. Tak więc proces dziecięcy 24738 należy do procesu nadrzędnego 24731.
Możesz także użyć funkcji, aby Twój program był bardziej modułowy. Tutaj użyłem ProcessTask () I marenittask () funkcje odpowiednio dla procesów dziecka i macierzystego. W ten sposób faktycznie używany jest Fork ().
#włączaćWyjście powyższego programu:
Uruchamianie wielu procesów dla dzieci za pomocą Fork () i Loop:
Możesz także użyć pętli, aby stworzyć tyle procesów dzieci, ile potrzebujesz. W poniższym przykładzie utworzyłem 5 procesów dziecięcych za pomocą pętli. Wydrukowałem również PID i PPID z procesów dziecka.
#włączaćJak widać, identyfikator procesu nadrzędnego jest taki sam we wszystkich procesach dziecka. Więc wszystkie należą do tego samego rodzica. Wykonują również liniowy sposób. Jedna po drugiej. Kontrolowanie procesów dzieci jest wyrafinowanym zadaniem. Jeśli dowiesz się więcej o programowaniu systemu Linux i o tym, jak to działa, i tak będziesz mógł kontrolować przepływ tych procesów.
Przykład prawdziwy:
Różne złożone obliczenia matematyczne, takie jak MD5, SHA256 itp. Generowanie skrótu, wymaga dużej mocy obliczeniowej. Zamiast obliczać takie rzeczy w tym samym procesie, co program główny, możesz po prostu obliczyć skrót na procesie dziecka i zwrócić skrót do głównego procesu.
W poniższym przykładzie wygenerowałem 4-cyfrowy kod PIN w procesie dziecka i wysłałem go do procesu nadrzędnego, głównego programu. Następnie wydrukowałem stamtąd kod PIN.
#włączaćJak widać, za każdym razem, gdy uruchamiam program, otrzymuję inny 4-cyfrowy kod PIN.
Tak więc w zasadzie używasz wywołania systemu Fork () w Linux. Dziękujemy za przeczytanie tego artykułu.