Lance

À quoi sert lance ?

Lance est un petit script en Perl qui permet de lancer simultanément plusieurs programmes en tache de fond, d'attendre que tous ces programmes aient fini leur travail et une fois que tous sont morts, de mourir tranquillement lui même.

Quel est l'intéret de Lance ?

On peut trouver de très nombreuses utilisations à lance, l'auteur s'en sert surtout pour ses connexions Internet. Cela permet de lancer simultanément tous les programmes qui mettent à jour le système par rapport à Internet en même temps et de rendre la connexion qu'après la mort du dernier des programmes.
On peut ainsi optimiser le temps de connexion de façon simple et automatique.

Comment utiliser Lance ?

Lance est un script Perl, il a donc besoin d'un interpreteur perl. Je le lance ainsi :

lance.pl 'sudo sendmail -q' 'sudo fetchmail' 'sudo fetchnews' ; ppp-off

lance.pl

#!/usr/bin/perl

use strict;
use POSIX qw(:sys_wait_h);


my $name = $0;
my $num_option = $#ARGV;
my $current = 0;

print $num_option + 1 ." options\n";
my $fork;

my $i;
for($i = 0; $i <= $num_option; $i++)
{
	$fork = fork();
	if($fork == 0)
	{
		exec($ARGV[$i]);
		exit(0);
	}
	else
	{
		$current++;
		print "launch $ARGV[$i]\n";
	}
}

my $child;

while($current > 0)
{
	$child = waitpid(-1,WNOHANG);
	if($child != -1 and $child != 0)
	{ 
		print "$child finished\n";
		$current--;
	}
	sleep(1);
}

exit 0;