Probleme d'utilisation de signal et pause (C)

Résolu/Fermé
grouzoide Messages postés 6 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 31 janvier 2008 - 30 déc. 2007 à 15:20
 Ghost974 - 14 mars 2010 à 15:58
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 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
30 déc. 2007 à 15:24
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 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 31 janvier 2008
30 déc. 2007 à 15:28
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 513 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 20 novembre 2011 193
30 déc. 2007 à 15:32
là ca devient compliqué pour moi, je ne suis pas expert en C désolé ^^

bonne chance à toi quand meme ;)
0
C'est simple, le 2eme parametre de signal est un pointeur sur fonction.
0
pascal.barbier Messages postés 33 Date d'inscription samedi 8 décembre 2007 Statut Membre Dernière intervention 7 décembre 2008 6
30 déc. 2007 à 15:32
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 Date d'inscription dimanche 30 décembre 2007 Statut Membre Dernière intervention 31 janvier 2008
30 déc. 2007 à 15:35
OKay ! pour ma culture perso, pourquoi c'est dangereux?
0