Rozumiem, że chociaż exec () nie zwraca po wykonaniu w Uniksie, system () może lub może nie zwraca w zależności od sytuacji, ale czy ktoś może wyjaśnić, dlaczego wywołanie systemowe exec () nie zwraca, a także różnice między exec () i system () w systemie operacyjnym Unix

Komentarze

  • Zauważ, że system(3) nie jest wywołaniem systemowym, to ' funkcja biblioteki, która sama w sobie tworzy kilka wywołania systemowe.
  • system() zawsze zwraca.

Odpowiedź

system () jest równoważne fork () + exec () + wait (); Oznacza to, że gdy proces uruchamia funkcję system (), tworzy nowy proces i czeka na zakończenie tego procesu. Nowy proces wykonuje polecenie w swoim własnym środowisku, po zakończeniu wywołujący otrzymuje sygnał potomny.

Aby uzyskać dalsze informacje man exec

„exec zastępuje bieżący obraz procesu nowym obrazem procesu”, to znaczy, że po wyjściu wywołujący również kończy pracę, ponieważ wywołujący stał się nowym procesem.

Komentarze

  • ' to coś więcej. system() faktycznie exec() jest domyślną powłoką i przekazuje do niej ciąg w celu przetworzenia, więc możesz na przykład użyć potoku i innych funkcji powłoki.

Odpowiedź

To wywołanie systemowe w systemie Unix, które zastępuje aktualnie działający proces informacjami z programu binarnego.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *