2017-10-16 14 views
0
  • Ich habe ein Skript execute.pl und es ruft child.pl durch system Anruf.
  • ich ein Objekt von AppLogger in execute.pl
  • Jetzt in diesem AppLogger ich den Aufbau einer Verbindung zu meinem Scribe Logging-Server und hatGeordnetes Prozessvariablen innerhalb Child Prozess in Perl

  • Dieses AppLogger ist Paket und eine Schnittstelle zu meinem Scribe Protokollierserver erschaffe verschiedene Funktionen wie sendlog, die Protokolle an den Server sendet.

    execute.pl:

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

Wie ich system wissen, ist ein OS Anruf und child.pl wird komplett anders Prozess, aber immer noch gibt es eine Möglichkeit ich $logger dh AppLogger Objekt innerhalb child.pl zugreifen können, ohne Erneutes Erstellen eines Verbindungsobjekts jedes Mal, wenn ich protokollieren möchte.

+0

übergeben Sie die Variablen als Argumente und erfassen Sie sie mit 'my $ var = shift;' oder 'my ($ var1, $ var2 ...) = $ _;' –

+0

ja Ich muss auf mein Objekt in Eltern in meinem zugreifen Kindprozess –

+0

Sie können dasselbe mit dem 'eval' anstelle des' system' Aufrufs erreichen. Aber es ist möglicherweise keine gute Idee zu verwenden. –

Antwort

2

Nr. system ist ein Wrapper um fork + exec + wait. exec ersetzt das Programm, das im Prozess ausgeführt wird, einschließlich seines Heaps (Arbeitsspeichers).

Verwandte Themen