Comment obtenir des variables partagées entre l'enfant et le parent processus lors de l'utilisation de la fourche en perl
Je suis l'aide d'une fourchette dans mon code. Avant fourche appel dans mon code, le processus parent a une variable globale déclarée. Ainsi, après la fourche appel n'processus enfant obtenir une copie de la variable globale sur sa propre pile de thread ou d'actions existantes de la mère de l'instance de la variable globale. donc, je pense qu'il y a trois possibilités ici
1) l'enfant est séparé de l'instance de la variable globale déclarée dans le processus parent
2) processus enfant partage la variable globale avec les parents thread. (qui est peut-être pas vrai)
3) processus enfant ne marche pas toute cherché des informations sur la variable globale dans le parent fil
Si 2 ou 3 options sont vraies, je veux savoir si il existe un moyen d'obtenir la variable globale et de son "état/valeur au moment de l'exécution de fork ()", a déclaré dans le thread parent, de l'enfant dans le processus.
assez largement, est-il possible d'accéder parent processus de variable et il y a des états de l'enfant dans le processus de créé avec fork().
OriginalL'auteur chaitu | 2012-05-11
Vous devez vous connecter pour publier un commentaire.
Chaque processus a son propre espace mémoire. Un processus ne peut normalement accéder à un autre espace mémoire du processus.
Dans le cas de
fork
, le processus de l'enfant de l'espace mémoire qui commence comme une copie exacte des parents. Qui inclut des variables, code, etc. La modification de ces en sera pas de changement de toute autre variable dans l'autre.Il est donc de répondre #1.
Même si tu le pouvais, la question à vous poser n'est pas "comment puis-je partager variable?" mais "comment puis-je échanger des données?". Contrôlée de canal est moins sujettes à l'erreur, car il fournit un couplage lâche et l'action à distance.
Tuyaux sont souvent utiliser pour la communication entre le parent et l'enfant, mais il ya beaucoup d'autres options.
OriginalL'auteur ikegami
Exemple de code:
OriginalL'auteur d.j
C'est le cas "1) l'enfant est séparé de l'instance de la variable globale déclarée dans le processus parent".
Le point de processus distincts est de séparer la mémoire. Donc vous ne pouvez pas partager des variables entre le parent et l'enfant, une fois que la fourche s'est produite.
Vous devriez jeter un oeil à la perlipc manuel page qui liste quelques autres options pour la communication inter-processus (IPC). Et regarder les autres StackOverflow des questions sur la communication parent-enfant.
OriginalL'auteur dolmen