some-usable-scripts/c/multiChrono.c

62 lines
1.3 KiB
C
Raw Normal View History

2011-02-20 18:52:23 +01:00
#!/usr/bin/perl -w
# creation d'un programme "multiChrono.pl" qui va creer un nouveau processus chrono
# <20> chaque fois qu'il recoit le signal SIGTERM
# sur le signal SIGINT le processus "multiChrono" envoie ce signal <20> tous ses fils qui
# affichent <20> leur tour la valeur du compteur
# sur le signal SIGQUIT le processus renvoie ce signal <20> tous ses fils qui
# affichent la valeur de leur compteur et quittent.
#
@tab; # liste des fils cr<EFBFBD>es
sub nouveau
{
# creation d'un processus
$pid=fork();
if($pid == 0 )
{
exec "chrono.pl";
exit(255);
}
else
{
$tab[$#tab + 1] = $pid; # on ajoute le nouveau fils
print "nouveau chrono cree ( $pid)\n ";
print "liste des fils @tab \n";
}
}
sub inter
{
# affiche la valeur du compteur
# on transmet ce signal <20> tous les fils
print "\n on transmet le signal SIGINT a tous les chronometres fils \n";
kill 2, @tab;
}
sub arret
{
print "\n on transmet le signal SIGQUIT a tous les chronometres fils \n";
kill 3, @tab;
$tab=(); # on vide le tableau + wait <EFBFBD> faire
exit(0);
}
# debut du programme
# print "\ndebut \n"
$SIG {"TERM"} = "nouveau"; #on cree un nouveau chrono
$SIG {"INT"} = "inter"; # signal SIGINT (2)
$SIG{"QUIT"} = "arret"; # SIGQUIT (3)
print "\nInitialisation - programme principal = $$ \n"; # on affiche le pid et on boucle
while (1) {
getc
}