Lösung mit mehreren Prozessen III

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]

motdserver.pl
while (defined(my $handle = $socket->accept)) {
   my $pid;
   if (defined($pid = fork) && $pid == 0) {
      while ((defined(my $cmd = <$handle>))) {
         $cmd =~ s/\r?\n$//m;
         # process $cmd
      }
      $handle->close;
      exit(0);
   } else {
      $handle->close;
   }
}

*Für jeden neu hinzukommenden Klienten wird mit fork(2) ein neuer Prozeß erzeugt.
 
*fork liefert in Perl

*undef, falls es nicht möglich war, einen neuen Prozeß zu kreieren,
 
*0 beim Kindprozeß und
 
*die Prozeß-ID des Kindprozesses beim elterlichen Prozeß.
 

*Alle Daten und offenen Dateiverbindungen werden vererbt -- jedoch nicht gemeinsam gehalten.
 
*Der Kindprozeß kann dann in Ruhe seinen Dialog durchführen, ohne die Dialoge mit den anderen Klienten zu behindern.
 

 [Vorheriges Kapitel]  [Vorherige Seite]  [Inhaltsverzeichnis]  [Nächste Seite]  [Nächstes Kapitel]
Copyright © 1996, 1998, 1999, 2000 Andreas Borchert, in HTML konvertiert am 07.02.2000