Probleme d'utilisation de signal et pause (C)

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

  • Votes
  • Date
  • Date décroissante
  1. tu initialise i=0 puis tu fais la boucle while tant que i>4, ce qui n'arrive jamais non ?

    ++
    1. 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;
      }
      1. là ca devient compliqué pour moi, je ne suis pas expert en C désolé ^^

        bonne chance à toi quand meme ;)
        1. C'est simple, le 2eme parametre de signal est un pointeur sur fonction.
      2. 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
        1. OKay ! pour ma culture perso, pourquoi c'est dangereux?