TP-systeme-exploitation-cen.../TP2/verif_signaux/verif_signaux_mod.sh

84 lines
1.9 KiB
Bash
Raw Permalink Normal View History

2023-06-20 18:57:09 +00:00
#!/bin/sh
# PM 2021-04-06
# Laureηt 2021-04-08 # Works on my machine ™
# utiliser l'option "-s" pour archiver le code
if [ \( "a$1" = 'a-s' \) ] ; then
echo "préparation de l'archive à soumettre"
rep=`whoami | cut -d' ' -f 1`-tpSignaux # fix typo
mkdir "$rep"
if [ ! \( -f etu/reponses \) ] ; then
echo "note : fichier réponses non trouvé"
else
cp etu/reponses "$rep"
fi
if [ ! \( -f etu/etu.c \) ] ; then
echo "note : fichier source etu.c non trouvé"
else
cp etu/etu.c "$rep"
fi
cp a/s "$rep"
tar -cf "$rep".tar "$rep"
rm -r "$rep"
echo "prêt : vous pouvez déposer l'archive $rep.tar sous Moodle"
exit 0
fi
export PATH=.:$PATH
res=KO
gcc -Wall etu/etu.c -o sgnetu
gcc -Wall a/kro.c -o a/bar
a/bar > hurz
aleph=`cat hurz | head -1` # = 10
o6=`cat hurz | tail -1` # = 12
jack=`cat a/b/core` # = "Reception"
echo "10 secondes..."
sgnetu > foo & # on lance le script en arrière plan
# et on déverse son contenu dans le fichier foo
pid=$! # on récupère le pid du processus mis en arrière plan
#pid=`pgrep sgnetu` # utilisez pgrep
printf "DEBUG: pid=$pid\n"
sleep 4
kill -USR1 $pid
kill -USR2 $pid
sleep 7
kill -USR1 $pid
kill -USR2 $pid
r3=`cat foo | grep "$jack $aleph" -c` # compte le nombre de "Reception 10" (SIGUSR1)
printf "DEBUG: r3=$r3\n"
r4=`cat foo | grep "$jack $o6" -c` # compte le nombre de "Reception 12" (SIGUSR2)
printf "DEBUG: r4=$r4\n"
echo "encore 10 secondes..."
sleep 12
r5=`cat foo | grep Salut -c` # compte le nombre de "Salut"
printf "DEBUG: r5=$r5\n"
r6=$((r4/r3)) # division entière de r4 par r3
printf "DEBUG: r4/r3=$r6\n"
r7=`cat a/pfurz` # = 2
printf "DEBUG: r7=$r7\n"
printf "DEBUG: r5 = 1 && r4/r3 = r7 ?\n"
printf " ---> $r5 = 1 && $r6 = $r7\n"
if [ \( $r5 -eq 1 \) -a \( $r6 -eq $r7 \) ] ; then
res=OK # etu.c est correct (normalement)
fi
echo $res > a/s # on sauvegarde le résultat du test
echo $res # on affiche le résultat du test