Question

Après une fourche de processus et le fils fourchue invoque execv, est le résultat toujours le fils du père?

Était-ce utile?

La solution

fourchette crée un nouveau processus appelé l'enfant du parent ..... exec remplace le programme en cours d'exécution en cours avec le processus exec'd et reste donc le processus d'enfant du parent ...

Autres conseils

Oui. execv ne crée pas un nouveau processus - qui est pourquoi vous devez d'abord à la fourchette

.

Oui il est. Aussi la terminologie « famille de processus » est trop proche de « groupe de processus », qui est tout à fait un concept important.

Vous êtes sur la bonne voie. En fait, la fourchette (2) appel système dans l'ancien UNIX créé une copie du processus qui fourchue, avec un nouveau PID et une nouvelle pile de processus, la copie de l'espace mémoire pour le faire. exec charge le processus existant avec une nouvelle image. Vous pouvez voir une version de ce dans l'opération de exec dans la plupart des coquilles -. Il UNS l'image souhaitée dans le processus qui a été occupé par le shell

Lorsque vous un processus fork, l'appel système fork retourne le PID du nouveau processus, si vous êtes le parent, ou 0 si vous êtes l'enfant. Le processus enfant hérite également tous les descripteurs de fichiers ouverts, en particulier 0,1 et 2, qui sont plus communément connu sous le nom STDIN, STDOUT et STDERR.

(Pop Quiz: comment voulez-vous que un shell gère la redirection, par exemple avec >)

Des variantes plus UNIX moderne avec des espaces d'adressage plus grand de l'outils variante de fourche appelée (le total! UNIX n'avait 64K mots d'origine) vfork que des copies seulement le sous-ensemble nécessaire du processus pour commencer à courir, et dépend le gestionnaire de mémoire pour tirer dans le reste si nécessaire. Étant donné que la fourchette la plupart des fois est immédiatement suivie par le Comité exécutif, qui doit charger une nouvelle image de toute façon, c'est une optimisation significative.

Mach prend un peu plus loin; lorsque vous créez un nouveau pprocess, rien n'est copié, sauf ce que vous avez besoin pour un contexte d'exécution; l'image est exactement le même. Copie ne se produit que lorsque le processus change un emplacement en mémoire, à quel point la page contenant cet emplacement est copié. Ceci est appelé « copie à l'écriture », et est presque optimale.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top