Î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

  • Rețineți că 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.

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 fapt exec() 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.

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *