Probleme d'utilisation de signal et pause (C)

Résolu
grouzoide Messages postés 6 Statut Membre -  
 Ghost974 -
Bonjour,le programme ci dessous ne s'exécute pas comme il le devrait, il écrit dans le terminal au bout de 8s "Alarm clock " et quitte. Sauriez vous pourquoi? En vous remerciant... :)

#include <signal.h>
#include <unistd.h>
#include <stdio.h>

int main()
{
int i ;
while(i>4)

{ alarm(8);
pause();
printf("fin attente alarme\n");
i++;
}
return 0;
}

5 réponses

  1. supernico Messages postés 584 Statut Membre 193
     
    tu initialise i=0 puis tu fais la boucle while tant que i>4, ce qui n'arrive jamais non ?

    ++
    0
  2. grouzoide Messages postés 6 Statut Membre
     
    Oui ^^ merci, je n'avais pas fait attention, mais en soit, ca ne suffit pas à faire marcher le programme. Parcontre, comme cela il marche... Je trouve quand meme ca assez moche. Ne peut on pas se passer de "it_horloge"?

    #include <signal.h>
    #include <unistd.h>
    #include <stdio.h>

    void it_horloge(int sig) /* routine executee sur reception de SIGALRM */
    {
    }

    int main()
    {
    signal(SIGALRM,it_horloge) ; /* interception du signal */
    int i=0 ;
    while(i<4)

    { alarm(3);
    pause();
    printf("fin attente alarme\n");
    i++;
    }
    return 0;
    }
    0
  3. supernico Messages postés 584 Statut Membre 193
     
    là ca devient compliqué pour moi, je ne suis pas expert en C désolé ^^

    bonne chance à toi quand meme ;)
    0
    1. Ghost974
       
      C'est simple, le 2eme parametre de signal est un pointeur sur fonction.
      0
  4. pascal.barbier Messages postés 34 Statut Membre 6
     
    Attention quand on veut compter de zéro à quatre en C il ne faut JAMAIS utiliser une boucle while (beaucoup trop dangereuse : la preuve ici).
    Utilisez à la place la boucle for :

    for( i = 0 ; i < 4 ; i++ )
    etc.


    Joyeuses fêtes
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. grouzoide Messages postés 6 Statut Membre
     
    OKay ! pour ma culture perso, pourquoi c'est dangereux?
    0