2
0
Fork 0
Verif_Herezh/Batterie/FONCTION_UNIQUE/LOI_DE_COMPORTEMENT/LOI_VIA_UMAT/Test_R_LOI_VIA_UMAT_THERMO_DEPENDANTE/LOI_VIA_UMAT_1.pretrait1

103 lines
3.2 KiB
Text
Raw Normal View History

#!/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";