Fork mit Perl

Dieses Thema: "Fork mit Perl" im Forum "Ruby, php, Perl, Python ..." wurde erstellt von zielscheibe, 20.02.2006.

  1. #1 zielscheibe, 20.02.2006
    zielscheibe

    zielscheibe Mitglied

    Dabei seit:
    31.10.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Hallo NG!

    Hab da ein kleines Problem, welches ich nicht verstehe.
    Ich brauch in einem Programm mehrere Forks. Ich will
    aber, während die Kinder irgendetwas tun, mit dem Vater im
    "normalen" Programm weiter machen. Ein stark verkürzter
    Ausschnitt aus dem Programm (normalerweise haben die
    Variablen manierliche Namen und "use strict" wird benutzt):


    Code:
    #!/usr/bin/perl -w
    
    
    	print "Start von $$\n";
    	oben();
    	print "Ende von  $$\n";
    	
    
     	sub oben
            {
                    for (my $i = 1; $i <= 4 ; $i++)
                    {
                    	print "$$ In der schleife\n";
                    	unten();
                    }
            }
    
    
    
    	sub unten
            {
                    my $pid = open my $self, "|-"; 
    
                    if ($pid == 0)
                    {
                            print "Hier Kind:  $$\n";
                            sleep (10);
                            exit 0;
                    }
    
                    elsif ($pid > 0)
                    {
                            print "Hier Vater: $$\n";
                            return;  
    		}
            }
    
    
    Warum springt der Vater nicht direkt zurück und
    schreibt "Ende von" sondern wartet mit jedem Kind die 10 Sekuden :think:
     
  2. Anzeige

    schau mal hier --> (hier klicken). Viele Antworten inkl. passender Shell-Befehle!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 Wolfgang, 20.02.2006
    Wolfgang

    Wolfgang Foren Gott

    Dabei seit:
    24.04.2005
    Beiträge:
    3.978
    Zustimmungen:
    0
    Ort:
    Erfurt
    Hallo

    So geht das nicht.
    Du speicherst in deinem Script den Rückgabewert der Funktion
    open , statt der PID in $pid.
    Warum benutzt du nicht die Funktion fork?

    Code:
    if(! defined($pid= fork()){
    die "Error on Fork\n";
    }
    elsif($pid==0){
          print "Child go now sleep\n";
          sleep(10);
          print "Child terminate";
          exit;
          }
    else{
         print "Here the parent prozess\n";
         # do what ever you want
    }
    
    Gruß Wolfgang
     
  4. #3 zielscheibe, 21.02.2006
    zielscheibe

    zielscheibe Mitglied

    Dabei seit:
    31.10.2005
    Beiträge:
    28
    Zustimmungen:
    0
    Hallo Wolfgang!

    Prima - so funktioniert das :D
    (Da fehlte nur noch eine schließende Klammer für das IF.)
    Ich hatte das mit dem OPEN aus dem "Programmieren mit
    Perl" Buch vom O`Reilly Verlag. Da stand das so im Kapitel
    Interprozeßkommunikation drin. Ich hätte besser direkt nach
    fork schauen sollen. Vielen Dank für die schnelle Hilfe.
     
Thema:

Fork mit Perl

Die Seite wird geladen...

Fork mit Perl - Ähnliche Themen

  1. NayuOS - freier Fork von Chromium OS vorgestellt

    NayuOS - freier Fork von Chromium OS vorgestellt: NayuOS ist ein neues Open-Source-Betriebssystem für Chromebooks, das ohne Kontakt zu Google auskommt und sich speziell an Entwickler wendet....
  2. Io.js forkt Node.js

    Io.js forkt Node.js: Aus Unzufriedenheit mit der Cloud-Computing Firma Joyent haben einige der eifrigsten Entwickler des Javascript-Frameworks Node.js den Fork Io.js...
  3. OpenBSD-Fork Bitrig 1.0 erschienen

    OpenBSD-Fork Bitrig 1.0 erschienen: Zweieinhalb Jahre nach der initialen Ankündigung ist der OpenBSD-Fork Bitrig in Version 1.0 erschienen. Bitrig will OpenBSD modernisieren, indem...
  4. Mplayer-Fork »mpv«: Version 0.5 veröffentlicht

    Mplayer-Fork »mpv«: Version 0.5 veröffentlicht: Knapp ein Jahr nach der initialen Gründung des alternativen Players »mpv« kann das Projekt auf diverse Veröffentlichungen und zahlreiche...
  5. OpenBSD startet OpenSSL-Fork LibreSSL

    OpenBSD startet OpenSSL-Fork LibreSSL: Das OpenBSD-Team hat begonnen, die OpenSSL-Bibliothek zu entschlacken und unter dem Namen LibreSSL selbst weiterzuführen. Weiterlesen...