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

  • Notez que 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.

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *