IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

signal, alarm et compilation


Sujet :

C

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2015
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Biens de consommation

    Informations forums :
    Inscription : Janvier 2015
    Messages : 14
    Points : 27
    Points
    27
    Par défaut signal, alarm et compilation
    Bonjour j'ai un petit probleme dans un code. en gros on doit faire une multiplication en 5 secondes, ensuite une autre si on a juste ou faux ou pas répondu.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    #include <stdio.h>
    #include <unistd.h>
    #include <signal.h>
    #include <stdlib.h>
    #include <setjmp.h>
     
     
    int vrai = 0;
    int faux = 0;
    int a = 0;
    int b = 0;
    int res=-1;
     
    jmp_buf env;
     
    void sig_horloge()
    {
      printf("Le temps est écoulé !  Faux !\n");
      res=-1;
      sig++;
      faux++;
      longjmp(env,1);
    }
     
    void sig_quit()
    {
      printf("Vous avez %d bonnes réponses et %d fautes.\n", vrai, faux);
      exit(0);
    }
     
    int  main()
    {
      srand(getpid());  
      while(1)
      {
    	setjmp(env);
     
        a = (rand()%10+1);
        b = (rand()%10+1);
     
        printf("\n%d x %d ?\n", a, b);
     
        signal(SIGALRM, sig_horloge);
        alarm(5);
        signal(SIGINT, sig_quit);
     
        scanf("%d", &res);
     
    /*
    INSTRUCTIONS
     
    */
     
    }
    Si je ne fais que attendre ,J'arrive à passer une seule fois dans sig_horloge, aprés je n'y arrive plus, ca attend indéfiniment.


    EDIT : j'ai trouvé mais alors la, il faut que l'on m'explique : enfet pour que tout marche bien il fait compiler avec : -Wall -pedantic -ansi
    Je comprends pas pourquoi.

    Merci

  2. #2
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Manager / Cyber Sécurité

    Informations forums :
    Inscription : Mai 2004
    Messages : 10 149
    Points : 28 116
    Points
    28 116
    Par défaut
    Bonjour,

    longjmp dans un handler de signal ? Ne voudrais-tu pas plutot utiliser sigsetjmp et siglongjmp ?
    "La route est longue, mais le chemin est libre" -- https://framasoft.org/
    Les règles du forum

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/01/2015, 13h51
  2. [Dev-Pascal] Dès que je compile un programme mon antivirus Avast me signale un trojan
    Par ricchi dans le forum Autres IDE
    Réponses: 1
    Dernier message: 30/11/2012, 06h01
  3. Réponses: 0
    Dernier message: 15/10/2011, 21h12
  4. Fonction alarm et signal
    Par olivier857 dans le forum C
    Réponses: 9
    Dernier message: 11/07/2006, 11h23
  5. Réponses: 1
    Dernier message: 27/05/2002, 01h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo