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.
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.
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;