🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: ch.comp.os.linux
Article #20728

Re: Shellscript; fork...?

#20728
From: Samuel Kilchenmann
Date: Fri, 10 Sep 1999 00:00
85 lines
2439 bytes
Sven Kirmess <Sven.Kirmess@gmx.net> schrieb in:
news:37D7DC47.F86736F4@gmx.net...
> Ich suche eine M�glichkeit aus einem Shell-(oder auch Perl-)Skript
> mehrere Prozesse zu starten und am Schluss zu warten, bis sich der
> letzte beendet hat, um dann weitere Befehle auszuf�hren.
>
> Bsp:
>
> -> ppp-up
> -> suck und rnes und fetchmail und zB wget (miteinander)
> -> alle Programme sind fertig: ppp-down
> -> halt
>
> L�sst sich sowas relativ einfach erstellen oder wird das zu
> umst�ndlich?
>
Funktioniert sowas nicht?

ppp-up
suck&
rnes&
fetchmail&
wget&
wait
ppp-down
halt

falls dich die ExitCodes der gestarteten Prozesse interessieren:
ppp-up
suck&
suckPID=$!
rnes&
rnesPID=$!
usw.
wait $suckPID
echo "suck exited with " $?
wait $rnesPID
echo "rnes exited with " $?

Deinen Versuch fuer eine forker Funktion in Perl wuerde ich
persoenlich eher so schreiben:

#!/usr/bin/perl -w

use strict;

$SIG{CHLD} = sub { wait() };

sub forker {
  my @procList   = @_;

  my $maxTries   = 5;

  my $proc;
  foreach $proc (@procList) {
    my $pid;
    my $retryCount = 0;
    do {
      $pid = fork();
      if ($! =~ /No more process/i) {
        # EAGAIN
        $retryCount++;
        if ($retryCount >= $maxTries) {
          die "fork failed after $maxTries retries";
        }
        sleep 10;
      }
    } until defined($pid);

    if ($pid == 0) {
      # Child
      exec $proc or die "exec $proc failed: $!";
      # should never get here
      exit 0;
    } else {
      # Parent
      print "Process: $proc started ($pid)\n";
    }
  }
}

# Testit
forker(@ARGV);
wait();
print "finished\n";
Technical Details
Message-ID: <7r9hdm$qo1$1@news.swissonline.ch>
Path: arc1-ca.pugleaf.net!unknown!not-for-mail
References: <37D7DC47.F86736F4@gmx.net>

Show Full Headers
Complete Article Headers
X-Google-Language: GERMAN,ASCII
X-Google-Thread: f4b73,42b28dc6fa04e3fd
X-Google-Attributes: gidf4b73,public
From: "Samuel Kilchenmann" <skilchen@swissonline.ch>
Subject: Re: Shellscript; fork...?
Date: 1999/09/10
Message-ID: <7r9hdm$qo1$1@news.swissonline.ch>
X-Deja-AN: 523172336
Content-Transfer-Encoding: 8bit
References: <37D7DC47.F86736F4@gmx.net>
X-Priority: 3
Content-Type: text/plain; charset=ISO-8859-1
X-MimeOLE: Produced By Microsoft MimeOLE V5.00.2014.211
X-Complaints-To: abuse@swissonline.ch
X-Trace: news.swissonline.ch 936921334 27393 195.24.87.109 (9 Sep 1999 23:55:34 GMT)
Organization: .
X-MSMail-Priority: Normal
Mime-Version: 1.0
NNTP-Posting-Date: 9 Sep 1999 23:55:34 GMT
Newsgroups: ch.comp.os.linux