Quelle est la différence entre fork et exec sous Linux

WBOY
Libérer: 2022-05-17 15:52:35
original
2535 Les gens l'ont consulté

La différence entre fork et exec sous Linux : 1. Fork est utilisé pour créer un nouveau processus, appelé processus enfant, tandis que exec remplace tout le contenu du processus actuel par un programme spécifié 2. Les ID de processus avant et après ; exec ne change pas et l'identifiant a changé après que fork ait recréé le processus enfant.

Quelle est la différence entre fork et exec sous Linux

L'environnement d'exploitation de ce tutoriel : système linux7.3, ordinateur Dell G3.

Quelle est la différence entre fork et exec sous Linux ?

fork et exec sont tous deux des appels liés au processus.

fork

L'appel de fork peut créer un nouveau processus appelé processus enfant, et le processus appelant le fork La fonction est appelée. Tout ce qui concerne le processus parent et le processus enfant est identique à celui du processus parent, à l'exception du pcd (module de contrôle de processus). Si aucun des deux processus n'écrit dans la mémoire, alors les deux processus partagent la page mémoire du processus qui le concerne. appelée fonction fork. En apparence, il semble que le processus créé par fork soit plus rapide que le processus créé par exec. Mais tant que l'un des deux processus modifie la mémoire, la page mémoire sera copiée dans le processus enfant avant. la modification.

exec

Appeler exec pour créer un processus ne crée pas réellement un processus. Pour être plus précis, il s'agit de charger un fichier exécutable. Après avoir appelé exec, le fichier exécutable spécifié dans exec sera chargé dans le. l'espace du processus appelant exec, et le processus appelant exec sera chargé. La mémoire est mise à jour avec le contenu du fichier exécutable spécifié dans exec La différence

fork est principalement conçu pour Linux pour créer de nouveaux processus (threads), tandis que la série de fonctions exec() est utilisée pour spécifier que le programme remplace tout le contenu du processus en cours. Par conséquent, la série de fonctions exec() est souvent appelée après que les trois premières fonctions ont été utilisées pour établir un nouvel environnement d'exécution de programme. Le processus de Linux utilisant le processus init pour démarrer d'autres processus est généralement comme ceci

fork est l'appel le plus simple et ne nécessite aucun paramètre. Il crée simplement un processus enfant et crée un espace indépendant du processus parent.

Après avoir utilisé la fonction fork pour créer un nouveau processus, nous appelons souvent la fonction exec dans le nouveau processus pour exécuter un autre programme (par exemple, lorsque nous écrivons un programme, nous devons utiliser la fonction d'un programme que nous avons écrit avant. De cette façon, nous pouvons directement appeler un programme exécutable (cela peut grandement simplifier notre programme). Lorsqu'un processus appelle la fonction exec, le processus est complètement remplacé par un nouveau programme. Étant donné que l’appel de la fonction exec ne crée pas de nouveau processus, les ID des processus précédents et suivants n’ont pas changé.

Le processus parent génère un processus enfant identique via fork(). Le processus enfant créé utilise ensuite la fonction exec pour exécuter le processus réel à exécuter, et devient finalement un processus enfant pouvant exécuter certaines fonctions spécifiques.

Une fois qu'un processus appelle la fonction de classe exec, il "meurt" lui-même. Le système remplace le segment de code par le code du nouveau programme, supprime le segment de données et le segment de pile d'origine, et alloue de nouveaux segments de données et segments de pile au nouveau programme. La seule chose qui reste dans le segment de pile est le numéro de processus. En d’autres termes, pour le système, c’est toujours le même processus, mais c’est déjà un autre programme. Autrement dit, après avoir appelé la fonction familiale exec, les programmes suivants ne seront pas exécutés.

Apprentissage recommandé :

Tutoriel vidéo Linux

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!