Je comprends que si exec () ne revient pas après son exécution sous Unix, system () peut ou peut pas de retour en fonction de la situation.Mais quelquun peut-il expliquer pourquoi lappel système exec () ne retourne pas et aussi les différences entre exec () et system () dans le système dexploitation Unix
Commentaires
Réponse
system () équivaut à fork () + exec () + wait (); cela signifie que lorsquun processus exécute une fonction system (), il crée un nouveau processus et attend la fin de ce processus. Le nouveau processus exécute la commande dans son propre environnement, quand il a fini, lappelant reçoit le signal enfant.
Pour plus dinformations man exec
man system
« exec remplace limage de process actuelle par une nouvelle image de process », cela signifie quà sa sortie, lappelant sort également car lappelant est devenu le nouveau processus.
Commentaires
- Il y a ' un peu plus que cela.
system()
en faitexec()
est votre shell par défaut, et lui transmet la chaîne à traiter, vous pouvez par exemple utiliser un pipeline et dautres fonctionnalités du shell.
Réponse
Il sagit dun appel système sous Unix OS qui remplace le processus en cours dexécution par une information du programme binaire.
system(3)
nest pas un appel système, cest ' une fonction de bibliothèque qui en fait elle-même quelques appels système.system()
renvoie toujours.