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

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
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
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
Ghost974
 
C'est simple, le 2eme parametre de signal est un pointeur sur fonction.
0
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

Vous n’avez pas trouvé la réponse que vous recherchez ?

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