102 lines
3.2 KiB
Perl
Executable file
102 lines
3.2 KiB
Perl
Executable file
#!/usr/bin/env perl
|
|
use strict;
|
|
use warnings;
|
|
use English;
|
|
use File::Basename;
|
|
use Cwd;
|
|
my $NOM_PROG = basename $PROGRAM_NAME;
|
|
|
|
#
|
|
#
|
|
# les buts de ce script sont :
|
|
# 1- creer les pipes nommes pour le dialogue Herezh-Herezh (mkfifo)
|
|
# 2- lancer le processus Herezh Umat_HZ.info (qui sert d UMAT pour le vrai calcul Herezh de ce test LOI_VIA_UMAT_1.info)
|
|
# 3- s assurer que le processus Umat_HZ.info fonctionne avant de quitter
|
|
#
|
|
# remarque1 : on lance le processus Herezh Umat_HZ.info via le lien symbolique $lien_symbolique_HZ
|
|
# dont le nom sera facile a reperer pour le script de post-traitement LOI_VIA_UMAT_1.posttrait1
|
|
# (car le script LOI_VIA_UMAT_1.posttrait1 aura pour but de tuer ce processus apres le calcul LOI_VIA_UMAT_1.info)
|
|
#
|
|
# remarque2 : le processus Herezh Umat_HZ.info est lance dans un processus fils (fork) pour pouvoir le laisser
|
|
# tourner en fond de tache et quitter ce script
|
|
#
|
|
|
|
|
|
#chemin absolu vers l executable Herezh
|
|
my $hzchemin = shift(@ARGV);
|
|
|
|
#nom du fichier .info
|
|
my $finfo = shift(@ARGV);
|
|
|
|
|
|
|
|
#forcer a vider le buffer (autoflush)
|
|
$| = 1;
|
|
|
|
|
|
|
|
#creation des pipes nommes (mkfifo)
|
|
system("mkfifo -m+wr Umat_envoi_Hz");
|
|
if($!) {
|
|
print "\nErreur (prog:$NOM_PROG) : probleme dans la creation du pipe nomme Umat_envoi_Hz ($!)...\n\n";
|
|
print "resultat pretrait : ECHEC\n";
|
|
exit;
|
|
}
|
|
system("mkfifo -m+wr Umat_reception_Hz");
|
|
if($!) {
|
|
print "\nErreur (prog:$NOM_PROG) : probleme dans la creation du pipe nomme Umat_reception_Hz ($!)...\n\n";
|
|
print "resultat pretrait : ECHEC\n";
|
|
exit;
|
|
}
|
|
|
|
|
|
#changement d extension (suppression de l extension .a_renommer pour faire de ce fichier un .info exploitable)
|
|
system("mv -f Umat_HZ.info.a_renommer Umat_HZ.info");
|
|
|
|
|
|
#lien symbolique vers Herezh pour rendre le nom de cette commande unique
|
|
my $lien_symbolique_HZ = basename $hzchemin;
|
|
$_ = basename cwd;
|
|
$lien_symbolique_HZ = $_.'_'.$lien_symbolique_HZ;
|
|
system("ln -s $hzchemin $lien_symbolique_HZ");
|
|
|
|
|
|
#lancement du processus Herezh Umat dans un processus fils (fork)
|
|
system("rm -f $lien_symbolique_HZ.com");
|
|
my $pid_UMAT_HZ = fork();
|
|
#
|
|
#le bloc suivant ne concerne que le processus fils
|
|
if($pid_UMAT_HZ == 0) {
|
|
system("$lien_symbolique_HZ -f Umat_HZ.info");
|
|
system("echo 1 > $lien_symbolique_HZ.com");
|
|
exit;
|
|
}
|
|
|
|
|
|
#apres un temps de pause, on regarde si le processus Herezh tourne
|
|
select(undef, undef, undef, 0.5);
|
|
my $cpt_probleme = 0;
|
|
while(join('', qx(ps | grep $lien_symbolique_HZ | grep -v grep)) eq '') {
|
|
select(undef, undef, undef, 0.5);
|
|
$cpt_probleme++;
|
|
if($cpt_probleme == 50) {
|
|
print "\nErreur (prog:$NOM_PROG) : le processus Herezh Umat_HZ.info ne se lance pas (ou alors s est arrete prematurement)...\n\n";
|
|
print "resultat pretrait : ECHEC\n";
|
|
exit;
|
|
}
|
|
}
|
|
|
|
|
|
#apres un nouveau temps de pause, on regarde si le fichier $lien_symbolique_HZ.com a ete cree
|
|
# si oui, ca veut dire que le processus Herezh Umat s est arrete => donc il y a un probleme
|
|
select(undef, undef, undef, 0.5);
|
|
if(-e "$lien_symbolique_HZ.com") {
|
|
print "\nErreur (prog:$NOM_PROG) : le processus Herezh Umat_HZ.info s est peut-etre arrete prematurement...\n\n";
|
|
print "resultat pretrait : ECHEC\n";
|
|
exit;
|
|
}
|
|
|
|
|
|
|
|
#reussite du script
|
|
print "resultat pretrait : OK\n";
|