Executer un programe avec detection de boucle

Résolu
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

  1. Contributeur
    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
    1. Bonjour,

      Essaye le système du Timer
      0
      1. merci de repondre aussi vite comment puis - je l utiliser
        0
        1. @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
          1. donc si je comprend bien je met tout se code dans un programe shell puis j execute mon programme avant le exit ???
            0
            1. 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
              1. Contributeur
                Salut,

                Normal, la syntaxe est pour du MS-DOS ;-((
                0
                1. 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
                  1. Oulah escuse moi j'ai mal lus >< (Dur le matin )
                    Efectivement j'ai ripper sur Bash et pas Batch ...
                    0
                    1. 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
                      1. Contributeur
                        #!/bin/bash
                        
                        ./prog.sh &
                        sleep 2
                        kill $! 2>/dev/null
                        echo "Programe prog.sh arrêté."

                        ;-))
                        0
                    2. 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
                      1. sinon la solution de zip31 voir plus bas fonctionne et va me depaner entre temps
                        0
                        1. Oui merci à zipe31 d'être intervenu
                          Et Linux et moi s'est pas top à part en Python
                          0