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

Linux Discussion :

programmation des signaux avec c


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut programmation des signaux avec c
    salut à tout le monde je veux exécuter un programme en C sous ubuntu mais et j'arrive pas de le compilé l'erreur est "fichiers introuvable"malgré j'ai installé le compilateur gcc!svp aidez moi.
    aussi je recherche des exercices pour la programmation de linux par exemple les signaux avec solution!
    merci d'avance

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Montre nous la commande qui a provoqué l'erreur ainsi que la sortie de cette même commande. Pour ce qui est des signaux, je n'ai pas d'exercice corrigé à te proposer, en revanche, tu peux très bien essayer de te faire un petit programme, et je me ferais un plaisir de t'aider à le corriger s'il y a besoin.
    Cordialement.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut le gcc
    àpres la sauvgarde de mon fichier ;j'ai taper la commende pour compiler : GCC TP1.C IL m'affiche cette erreur
    tp1.c:1:18: erreur: stdio.h : Aucun fichier ou répertoire de ce type
    tp1.c:4:20: erreur: stdlib.h : Aucun fichier ou répertoire de ce type
    tp1.c:5:19: erreur: unistd.h : Aucun fichier ou répertoire de ce type
    tp1.c:6: erreur: expected «=", «,", «;", «asm" or «__attribute__" before «{" token
    merci pour votre repense

  4. #4
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Tape ça dans un terminal, ça devrait aller mieux après:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sudo apt-get install build-essential
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  5. #5
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    mersci beaucoup nicolas

  6. #6
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    De rien
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  7. #7
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut signaux
    salut;
    qui peux me dire quand utilise ou que fait les signaux user1;user2;et explique moi que fait les 2 instructions : int (*signal(sig,func))()
    int sig;(*func)()?
    merci d'avance

  8. #8
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Comme ça : pas grand chose!!!
    Peut montrer le code où tu as trouver ça s'il te plaît?
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  9. #9
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    pour user 1
    apres tout les include
    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
    void traitsignal(int s)
    {
    if(s==sigint){
    printf("jE  dois m'arrétet maitenant à bientot\n");
    EXIT(0);}
    else
    {
    printf("j'ai recu le signal SIGUSER1\N");
    PRINTF("BONJOUR\n");
    signal(SIGUSER11,SIG DFL);
    }
    }
    main(){
    int pid=fork()
    if (pid==-1){ 
    perror("erreur de creation de fils\n"); exit(1);
    } 
    if(pid===0){
    printf("je suis le processus fils,mon numero est:%d\n",getpid());
    la suite:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    sleep(3);
    kill(getppid(),SIGUSER1);
    }
    signal(SIGUSER1;traitsignal);
    signal(SIGINT;TRAITSIGNAL):
    WHILE(1){
    PRINTF("JE N'AI PAS ENCORE RECUE LE SIGNAL\N"):
    SLEEP(1);}
    }
    Desolé pour le derangement
    et merci

    à propos de la commende que tu me donnes il faut un cd rom pour packages de ubuntu, moi je veux les installer à partit d'internet tu peux me donner autre methode svp

  10. #10
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Citation Envoyé par nanouchou Voir le message
    à propos de la commende que tu me donnes il faut un cd rom pour packages de ubuntu, moi je veux les installer à partit d'internet tu peux me donner autre methode svp
    Système -> Administration -> Sources de logiciels
    là, tu décoches CDROM (en bas)
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  11. #11
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Les 2 codes postés sont faux et horribles. Bref SIGUSER(1-2) sont des signaux dont l'usage est laissé libre au programmeur.
    La fonction signal() ne doit pas être utiliser, préferer plutôt sigaction(), printf() ne doit pas être appeler dans un gestionnaire de signal.
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  12. #12
    Membre à l'essai
    Inscrit en
    Décembre 2008
    Messages
    17
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 17
    Points : 11
    Points
    11
    Par défaut
    c'est 1 seul code; le2 èmes c'est la suite du premier!c'est un programme dans lequel un processus crée un fils et initialise un handler(afficher bonjour)sur siguser1.le fils affiche des information à l'ecran puis envoie le signal siguser1à son père.
    je ne sais pas si l'exercice lui mème faux!
    l'essenciel merci encors fois pour vos aides;c'est gentiel

  13. #13
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    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
    #include <signal.h>
    #include <stdio.h>
    #include <unistd.h>
     
    static volatile sig_atomic_t received;
     
    static void handler(int const signum)
    {
       received = signum;
    }
     
    static void fils(void)
    {
       sleep(1);
       kill(getppid(), SIGUSR1);
    }
     
    static void pere(void)
    {
       sigaction(SIGUSR1, &(const struct sigaction) {.sa_handler = handler}, NULL);
     
       pause();
     
       if(received == SIGUSR1)
       {
          puts("catch SIGUSR1");
       }
    }
     
    int main(void)
    {
       switch(fork())
       {
          case -1:
             perror("fork");
             break;
          case 0:
             fils();
             break;
          default:
             pere();
       }
     
       return 0;
    }
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

Discussions similaires

  1. Blockage des signaux avec blockSignals()
    Par julieng31 dans le forum Débuter
    Réponses: 2
    Dernier message: 27/05/2014, 15h24
  2. [Débutant] Programmer des commandes avec C# sous visual studio 2010
    Par benamou11 dans le forum C#
    Réponses: 12
    Dernier message: 16/03/2012, 18h11
  3. Réponses: 2
    Dernier message: 28/04/2010, 14h23

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