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
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.
system(3)
non è una chiamata di sistema, è ' è una funzione di libreria che a sua volta crea alcune chiamate di sistema.system()
restituisce sempre.