Mam proces (nameprocess.c
), które tworzą pewne rzeczy.
Muszę stworzyć kolejny proces (nameprocess-generator.c
), które nadal generują ten proces nameprocess.c
aż do nadejścia odliczania 0
lub jakiś czas przybył 0
.
Czy muszę użyć execv
lub fork
?
Odpowiedzi:
1 dla odpowiedzi № 1Używasz obu. Za pomocą execv()
samo w sobie po prostu zastąpi bieganie przetwarzać z innym.
Najpierw używasz fork()
. Tworzy to klon działającego procesu. ty teraz mają dwa procesy z tym samym kodem. Jak im powiedzieć? niezależnie? Według wartości zwracanej. Oryginalny proces ("nadrzędny") otrzymuje zwracana wartość nowego identyfikatora procesu (pid
), a nowy ("dziecko") otrzymuje wartość zwracaną 0.
Tak więc oryginalny proces ciągle robi cokolwiek, podczas gdy nowy wywołuje jeden z execv
funkcje do zastąpienia się innym procesem.
Możesz zobaczyć przykładowy kod, który używa fork()
w starej odpowiedzi,
tutaj.