Capisco che mentre exec () non ritorna dopo essere stato eseguito in Unix, system () può o può non ritorna a seconda della situazione, ma qualcuno può spiegare perché la chiamata di sistema exec () non ritorna e anche le differenze tra exec () e system () nel sistema operativo Unix

Commenti

  • Tieni presente che system(3) non è una chiamata di sistema, è ' è una funzione di libreria che a sua volta crea alcune chiamate di sistema.
  • system() restituisce sempre.

Rispondi

system () è equivalente a fork () + exec () + wait (); questo significa che quando un processo esegue la funzione system (), crea un nuovo processo e attende la fine di questo processo. Il nuovo processo esegue il comando nel proprio ambiente, quando ha finito il chiamante riceve il segnale figlio.

Per ulteriori informazioni man exec man system

“exec sostituisce limmagine del processo corrente con una nuova immagine del processo”, questo significa che quando esce anche il chiamante esce poiché il chiamante è diventato il nuovo processo.

Commenti

  • Cè ' un po più di questo. system() in realtà exec() è la tua shell predefinita e le passa la stringa da elaborare, in modo che tu possa, ad esempio, utilizzare una pipeline e altre funzionalità della shell.

Answer

Questa è una chiamata di sistema nel sistema operativo Unix che sostituisce il processo attualmente in esecuzione con uninformazione dal programma binario.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *