Executer un programe avec detection de boucle [Résolu/Fermé]

Signaler
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
-
Messages postés
36298
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 janvier 2021
-
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

Messages postés
36298
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 janvier 2021
5 869
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

CCM 63550 internautes nous ont dit merci ce mois-ci

Messages postés
678
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
3 novembre 2016
37
Bonjour,

Essaye le système du Timer
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
merci de repondre aussi vite comment puis - je l utiliser
Messages postés
678
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
3 novembre 2016
37
@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
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
donc si je comprend bien je met tout se code dans un programe shell puis j execute mon programme avant le exit ???
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
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 '
Messages postés
36298
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 janvier 2021
5 869
Salut,

Normal, la syntaxe est pour du MS-DOS ;-((
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
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
Messages postés
678
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
3 novembre 2016
37
Oulah escuse moi j'ai mal lus >< (Dur le matin )
Efectivement j'ai ripper sur Bash et pas Batch ...
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
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
Messages postés
36298
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
26 janvier 2021
5 869
#!/bin/bash

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

;-))
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
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
Messages postés
123
Date d'inscription
mercredi 24 septembre 2008
Statut
Membre
Dernière intervention
24 octobre 2015
8
sinon la solution de zip31 voir plus bas fonctionne et va me depaner entre temps
Messages postés
678
Date d'inscription
vendredi 5 juin 2009
Statut
Membre
Dernière intervention
3 novembre 2016
37
Oui merci à zipe31 d'être intervenu
Et Linux et moi s'est pas top à part en Python