Partage
  • Partager sur Facebook
  • Partager sur Twitter

Horloge sur Linux en utilisant la fonction SIGALRM

    24 novembre 2014 à 4:12:16

    Bonjour à tous, j'ai un souci pour codé un programme C qui utilisera 3 processus H, M, S qui incrémentent les 3 aiguilles d'une horloge. S recevra un signal SIGALRM (mon gros problème) chaque seconde et émet un signal à M quand son compteur passe de 59 à 0. Quand M reçoit le signal il incrément son compteur. Lorsque celui passe de 59 à 0, M envoie un signal à H ainsi de suite. Les paramètres correspondent aux valeurs d'incrémentation des compteurs. L'affichage de l'horloge se fera comme une montre électronique. Voici mon code :

    #include <stdio.h>

    #include <signal.h>

    #include <unistd.h>

    #include <stdlib.h>

    #include <setjmp.h>

    //#include <conio.h>

    //<>

    int main(int argc, char *argv[]){

    int i,j,z;

    pid_t h;

    pid_t m;

    pid_t s; 

    h=fork(); 

    m=fork();

    s=fork();

    //clrscr();

    for(i=0;i<=3;i++){

           for(j=59;j<=0;j--){

    /*int min = 60;

    --min;*/

    for(z=1;z<=59;z++){

    alarm(1);

    if ( kill(s,SIGALRM) == -1 ) {

    printf("Erreur S");

    exit(EXIT_FAILURE);

    }

    else{

    printf("%d Seconde\n", z);

    //clrscr();

    }

    if(z==59){

    //alarm(1);

    if ( kill(m,SIGALRM) == -1 ) {

    printf("Erreur M");

    exit(EXIT_FAILURE);

    }

    else{

    printf("%d Minutes\n", j);

    //clrscr();

    }

    }

    }

    alarm(1);

    if ( kill(h,SIGALRM) == -1 ) {

    printf("Erreur H");

    exit(EXIT_FAILURE);

    }

    else{

    printf("%d Heures\n", i);

    printf("%d : Heure %d : Minutes %d : Secondes", i,j,z);

    }

    }

    }

    return (0);

    }

    Merci d'avance pour votre aide ce programme me casse la tête depuis un bon moment déjà.
    • Partager sur Facebook
    • Partager sur Twitter

    Keep moving forward!

      24 novembre 2014 à 9:12:17

      Balise code.

      T'es obligé de faire 3 processus pour gérer ça ? Parce que sinon c'est la solution la plus dégueulasse de l'univers.

      -
      Edité par imperio 24 novembre 2014 à 9:18:34

      • Partager sur Facebook
      • Partager sur Twitter
      Pour ceux qui souhaiteraient apprendre à développer en Rust, un tuto en français est dispo ici. Pour voir mes projets : github.
        25 novembre 2014 à 1:09:44

        imperio Oui c'est le but du programme justement !!!.
        • Partager sur Facebook
        • Partager sur Twitter

        Keep moving forward!

          25 novembre 2014 à 9:43:41

          Au risque qu’on se répète : met ton code en forme correctement.

          Sinon je peux déjà te dire que tu crée non pas 3 processus mais 8…

          • Partager sur Facebook
          • Partager sur Twitter
          per aspera ad astra – comp.lang.c FAQexplication pointeur

          Horloge sur Linux en utilisant la fonction SIGALRM

          × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
          × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
          • Editeur
          • Markdown