Article View: ch.comp.os.linux
Article #20728Re: Shellscript; fork...?
From: Samuel Kilchenmann
Date: Fri, 10 Sep 1999 00:00
Date: Fri, 10 Sep 1999 00:00
85 lines
2439 bytes
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-mailReferences:
<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