84 lines
1.9 KiB
Bash
84 lines
1.9 KiB
Bash
#!/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
|