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