Înțeleg că în timp ce exec () nu se întoarce după ce se execută în Unix, system () poate sau poate nu se întoarce în funcție de situație. Dar cineva poate explica de ce apelul de sistem exec () nu revine și, de asemenea, diferențele dintre exec () și system () în sistemul de operare Unix
Comentarii
Răspunde
system () este echivalent cu fork () + exec () + wait (); aceasta înseamnă că atunci când o funcție de proces de sistem () rulează un nou proces și așteaptă sfârșitul acestui proces. Noul proces execută comanda în propriul mediu, după ce a terminat, apelantul primește semnalul secundar.
Pentru informații suplimentare man exec
man system
„exec înlocuiește imaginea procesului curent cu o imagine nouă a procesului”, aceasta înseamnă că atunci când iese, apelantul iese și pe măsură ce apelantul a devenit noul proces.
Comentarii
- Există ' ceva mai mult decât atât.
system()
de faptexec()
este shell-ul dvs. implicit și îi transmite șirul pentru procesare, astfel încât să puteți utiliza, de exemplu, o conductă și alte caracteristici ale shell-ului.
Răspuns
Acesta este un apel de sistem în sistemul de operare Unix care înlocuiește procesul în curs de desfășurare cu o informație din programul binar.
system(3)
nu este un apel de sistem, este ' o funcție de bibliotecă care în sine face câteva apeluri de sistem.system()
revine întotdeauna.