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
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()
faktycznieexec()
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.
system(3)
nie jest wywołaniem systemowym, to ' funkcja biblioteki, która sama w sobie tworzy kilka wywołania systemowe.system()
zawsze zwraca.