Mais les processus enfants et parents résident sur différents espaces de mémoire. Ces espaces de mémoire ont le même contenu et toute opération effectuée par un processus n'affectera pas l'autre processus.
Lorsque l'enfant traite les processus; Maintenant, les deux processus auront le même compteur de programme (PC), donc ces deux processus indiqueront la même prochaine instruction. Les fichiers ouverts par le processus parent seront les mêmes pour le processus d'enfant.
Le processus de l'enfant est exactement le même que son parent, mais il y a une différence dans les processus d'identification:
Propriétés du processus enfant
Voici quelques-unes des propriétés d'un processus d'enfant:
Propriétés qui ne sont pas héritées par le processus enfant
Voici quelques-unes des propriétés qui ne sont pas héritées par un processus d'enfant:
fork () en c
Il n'y a pas d'arguments dans Fork () et le type de retour de Fork () est entier. Vous devez inclure les fichiers d'en-tête suivants lorsque Fork () est utilisé:
#inclureLorsque vous travaillez avec Fork (), peut être utilisé pour le type pid_t Pour les processus, les identifiants comme PID_T sont définis dans .
Le fichier d'en-tête est l'endroit où Fork () est défini, vous devez donc l'inclure à votre programme pour utiliser Fork ().
Le type de retour est défini dans et Fork () L'appel est défini dans . Par conséquent, vous devez inclure les deux dans votre programme pour utiliser l'appel système Fork ().
Syntaxe de Fork ()
La syntaxe de l'appel système Fork () dans Linux, Ubuntu est la suivante:
PID_T Fork (void);Dans la syntaxe, le type de retour est pid_t. Lorsque le processus de l'enfant est créé avec succès, le PID du processus de l'enfant est retourné dans le processus parent et 0 sera retourné au processus de l'enfant lui-même.
S'il y a une erreur, alors -1 est renvoyé au processus parent et le processus de l'enfant n'est pas créé.
Aucun argument n'est passé à Fork ().Exemple 1: appel à fork ()
Considérez l'exemple suivant dans lequel nous avons utilisé l'appel système Fork () pour créer un nouveau processus enfant:
#inclureSORTIR:
sysads @ Linuxhint $ gcc.C -o ForkDans ce programme, nous avons utilisé Fork (), cela créera un nouveau processus enfant. Lorsque le processus de l'enfant est créé, le processus parent et le processus de l'enfant pointent vers l'instruction suivante (même compteur de programme). De cette façon, les instructions ou les instructions restantes seront exécutées le nombre total de temps de processus, c'est-à-dire 2n fois, où n est le nombre d'appels système Fork ().
Ainsi, lorsque l'appel Fork () est utilisé une fois comme ci-dessus (21 = 2) Nous aurons notre sortie 2 fois.
Ici, lorsque l'appel système Fork () est utilisé, la structure interne ressemblera à:
Considérez le cas suivant dans lequel la fourche () est utilisée 4 fois:
#inclureSortir:
sysads @ Linuxhint $ gcc.C -o ForkMaintenant, le nombre total de processus créés est 24 = 16 Et nous avons notre déclaration imprimée exécutée 16 fois.
Exemple 2: Tester si Fork () a réussi
Dans l'exemple suivant, nous avons utilisé la construction de prise de décision pour tester la valeur (int) renvoyée par fork (). Et les messages correspondants sont affichés:
#inclureSORTIR:
sysads @ Linuxhint $ gcc.C -o ForkDans l'exemple ci-dessus, nous avons utilisé le type PID_T qui stockera la valeur de retour de Fork (). Fork () est appelé en ligne:
p = fork ();Ainsi, la valeur entière renvoyée par Fork () est stockée en p puis P est comparée pour vérifier si notre appel Fork () a réussi.
Lorsque l'appel Fork () est utilisé et que l'enfant est créé avec succès, l'ID du processus de l'enfant sera retourné au processus parent et 0 sera retourné au processus de l'enfant.L'identification du processus de l'enfant dans le processus parent ne sera pas la même que le processus d'identification du processus de l'enfant dans le processus de l'enfant lui-même. Dans le processus d'enfant, l'identification du processus enfant sera 0.
Avec ce tutoriel, vous pouvez voir comment démarrer avec l'appel du système de fourche dans Linux.