Executer un programe avec detection de boucle

Résolu/Fermé
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 - 16 févr. 2011 à 11:05
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 - 16 févr. 2011 à 13:05
Bonjour,

Je me demande s il existe une option ou une astuce pour detecter les boucles infini du genre
si je lance

./monProgramme

un moyen que le programme se termine sans que j ai a faire un ctrl C sur le bash


ou un truc du genre qui lance mon programme et si ce programme met plus de 5 seconde il ferme se dernier

merci

13 réponses

zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
16 févr. 2011 à 11:37
Salut,

Une solution...
$ cat prog.sh     # Programme avec boucle infinie
#!/bin/bash

while :
do
echo -n ". "
sleep 1
done


$ ./prog.sh     # Lancemant du programme
. . . . . . . . . . ^C     # Arrêt par CTRL+C

$ cat foo.sh     # Programme qui tue le précédent après 5 seconde
#!/bin/bash

./prog.sh &
sleep 5
kill $!
echo "Programe prog.sh arrêté."

$ ./foo.sh 
. . . . . Programe prog.sh arrêté.

$

;-))
3
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
16 févr. 2011 à 11:06
Bonjour,

Essaye le système du Timer
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:08
merci de repondre aussi vite comment puis - je l utiliser
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
Modifié par termgsi le 16/02/2011 à 11:21
@echo off

set temps=5
set /a secondefin=%time:~6,2%+%temps%


:inf1minute
if %secondefin% EQU %time:~6,2% (goto fin) else goto inf1minute


:fin
exit

Tu remplace 5 par le nombre de seconde que tu veux attendre
Je l'ai vite fait modifier il reste à l'adapter
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:17
donc si je comprend bien je met tout se code dans un programe shell puis j execute mon programme avant le exit ???
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:27
j ai copier ton code dans un fichier.sh

quand je fais bash fichier.sh

j ai les erreurs suivantes


emacs test.sh
dwyane-mac:test dwyane$ bash test.sh
test.sh: line 1: @echo: command not found
test.sh: line 5: syntax error near unexpected token '('
test.sh: line 5: 'if %secondefin% GEQ 60 (goto def) else goto inf1minute '
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
16 févr. 2011 à 11:33
Salut,

Normal, la syntaxe est pour du MS-DOS ;-((
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:37
mdr je me disais bien que je ne connaissai pas ce language , Je ne suis pas sur ms Dos je penssai avoir poster dans la section Linux / Unix .
et tu nas pas un code sur bash qui pourai passer
genre la traduction de sa
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
16 févr. 2011 à 11:41
Oulah escuse moi j'ai mal lus >< (Dur le matin )
Efectivement j'ai ripper sur Bash et pas Batch ...
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
Modifié par tapharule le 16/02/2011 à 12:05
Bien joue zipe31 sa regle mon probleme
par contre il aurai ete bien de teste si le processus de prog ./prog.sh existe avant de le kill car si le programme na pas fai de boucle infini le chell va raler comme koi il na pas trouver se processus
0
zipe31 Messages postés 36402 Date d'inscription dimanche 7 novembre 2010 Statut Contributeur Dernière intervention 27 janvier 2021 6 417
16 févr. 2011 à 13:05
#!/bin/bash

./prog.sh &
sleep 2
kill $! 2>/dev/null
echo "Programe prog.sh arrêté."

;-))
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:58
mdr mais merci pour ton aide . je croi que finalement je vais me fair un petit code en c++ multi processus qui va detecter les temps des processus et si l un d entre eux dur je le kill
0
tapharule Messages postés 123 Date d'inscription mercredi 24 septembre 2008 Statut Membre Dernière intervention 24 octobre 2015 8
16 févr. 2011 à 11:59
sinon la solution de zip31 voir plus bas fonctionne et va me depaner entre temps
0
termgsi Messages postés 678 Date d'inscription vendredi 5 juin 2009 Statut Membre Dernière intervention 3 novembre 2016 39
16 févr. 2011 à 12:04
Oui merci à zipe31 d'être intervenu
Et Linux et moi s'est pas top à part en Python
0