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. Oui merci à zipe31 d'être intervenu
      Et Linux et moi s'est pas top à part en Python
      0
      1. sinon la solution de zip31 voir plus bas fonctionne et va me depaner entre temps
        0
        1. 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. 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. Oulah escuse moi j'ai mal lus >< (Dur le matin )
            Efectivement j'ai ripper sur Bash et pas Batch ...
            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. Contributeur
                Salut,

                Normal, la syntaxe est pour du MS-DOS ;-((
                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. donc si je comprend bien je met tout se code dans un programe shell puis j execute mon programme avant le exit ???
                    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. merci de repondre aussi vite comment puis - je l utiliser
                        0
                        1. Bonjour,

                          Essaye le système du Timer
                          0