Fork mit Perl

Diskutiere Fork mit Perl im Ruby, php, Perl, Python ... Forum im Bereich Programmieren unter Linux/Unix; Hallo NG! Hab da ein kleines Problem, welches ich nicht verstehe. Ich brauch in einem Programm mehrere Forks. Ich will aber, während die...

  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

    Anzeige

    Wenn du mehr über Linux erfahren möchtest, dann solltest du dir mal folgende Shellkommandos anschauen.


    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. Gimp nach Namensstreit geforkt

    Gimp nach Namensstreit geforkt: Der Name des freien Bildbearbeitungsprogramms Gimp war schon sehr früh ein Streitpunkt, da er im englischsprachigen Raum einige anstößige...
  2. notqmail will Qmail-Forks konsolidieren

    notqmail will Qmail-Forks konsolidieren: Das Projekt notqmail hat mit einer ersten Veröffentlichung auf sich aufmerksam gemacht. notqmail ist ein Mailtransport-Programm, das das seit 2007...
  3. Warfork: Fork von »Warsow« erreicht Steam

    Warfork: Fork von »Warsow« erreicht Steam: Der First-Person-Shooter »Warsow« ist durch eine neue Entwicklergemeinschaft geforkt und unter dem Namen »Warfork« auch auf Steam veröffentlicht...
  4. LEDE: Fork von OpenWRT gestartet

    LEDE: Fork von OpenWRT gestartet: Unter dem Namen LEDE haben einzelne OpenWRT-Entwickler ein neues Projekt gestartet. Ziel des neuen Projektes ist es, eine gemeinschaftszentrierte...
  5. 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....
  1. Diese Seite verwendet Cookies um Inhalte zu personalisieren. Außerdem werden auch Cookies von Diensten Dritter gesetzt. Mit dem weiteren Aufenthalt akzeptierst du diesen Einsatz von Cookies.
    Information ausblenden