2017-10-16 25 views
0
  • J'ai un script execute.pl et il appelle child.pl à system appel.
  • Je crée un objet de AppLogger dans execute.pl
  • Ce AppLogger est forfait et une interface à mon Scribe serveur de journalisation
  • Maintenant dans ce AppLogger j'établissement d'une connexion à mon serveur de journalisation Scribe et a diverses fonctions comme sendlog qui envoie des journaux au serveur.Variables de processus parent à l'intérieur du processus enfant en Perl

    execute.pl:

    use AppLogger; 
    use strict; 
    use warnings; 
    
    my $logger = new AppLogger; 
    system("perl child.pl") 
    

Comme je sais system est un OS appel et child.pl processus sera complètement différent, mais toujours est-il un moyen que je peux accéder $logger-à-dire AppLogger objet à l'intérieur child.pl sans recréer un objet de connexion chaque fois que je veux me connecter.

+0

passer les variables comme arguments et les capturer avec 'my $ var = shift;' ou 'my ($ var1, $ var2 ...) = $ _;' –

+0

oui j'ai besoin d'accéder à mon objet parent dans mon processus enfant –

+0

Vous pouvez obtenir la même chose en utilisant l'appel 'eval' au lieu de' system'. Mais ce n'est peut-être pas une bonne idée à utiliser. –

Répondre

2

Le numéro system est une enveloppe autour de fork + exec + wait. exec remplace le programme exécutant dans le processus, y compris son tas (mémoire).