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 :

semaphore et signaux


Sujet :

Linux

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Points : 10
    Points
    10
    Par défaut semaphore et signaux
    Bonsoir,
    Mon objectif c'est d'avoir deux processus père et fils, le premier produit et le second consomme, les deux boucle infiniment; l'utilisateur doit avoir un menu en faisant un (Ctl+c) et pour cela doit traiter ce signal avec cette partie du code:

    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
    #include <stdio.h>
    #include <malloc.h>
    #include <sys/stat.h>
    #include <sys/shm.h>
    #include <sys/sem.h>
    #include <sys/types.h>
    #include <sys/ipc.h>
    #include <string.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <stdio.h>
    #include <signal.h>
     
    sig_atomic_t sig_int=0;
    void handler_int()
    {
    sig_int=1;
    }
     
    int main()
    {
    struct sigaction sa,oldsa;
    memset(&sa, 0, sizeof(sa));
    sa.sa_handler = &handler_int;
    sigemptyset(&sa.sa_mask);
    sa.sa_flags = SA_RESTART;
    sigaction(SIGINT, &sa,&oldsa);
     
    int pidchil=fork()
    if(pidchild == 0)
    {
    while(1)
    {
    //consomation
    }
     
    }
    }
     
    while(!sig_int)
    {
       //production
    }
    //afficher le menu et lire le choix
     
    }
    avec ça j'ai remarqué que après le traitement du signal, j'ai eu un problème dans les sémaphore qui avant l'introduction du signal, tout marche bien; et les opérations sur les sémaphores j'ai 4 fonction:
    les deux premières sont:

    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
    int snb_semaphore_wait (int semid)
    {
    struct sembuf operation[1];
    operation[0].sem_num = 0;
    operation[0].sem_op = -1;
    operation[0].sem_flg = 0;
     
    return semop (semid, operation, 1);
    } 
     
    int snb_semaphore_post (int semid)
    {
    struct sembuf operation[1];
    operation[0].sem_num = 0;
    operation[0].sem_op = 1;
    operation[0].sem_flg = 0;
     
    return semop (semid, operation, 1);
    }
    et les deux autres :à la place de .sem_flg=0 j'ai met .sem_flg = SEM_UNDO

    pour certain sémaphores j'ai appliqué les deux premières Operations et les deux autres pour le reste
    Merci d'avance;

  2. #2
    Membre à l'essai
    Inscrit en
    Février 2010
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 10
    Points : 10
    Points
    10
    Par défaut
    ce forum est bon pour les un pas pour d'autre ni de système ni en java à quoi est bon ce forum qui ne donne aucune réponse

  3. #3
    Modérateur
    Avatar de gangsoleil
    Homme Profil pro
    Manager / Cyber Sécurité
    Inscrit en
    Mai 2004
    Messages
    10 150
    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 150
    Points : 28 129
    Points
    28 129
    Par défaut
    Bonjour,

    Quel est ton probleme exactement ? Tu ne poses pas de question, et ne nous dit pas ce qui ne se passe pas de la maniere que tu attends : nous ne pouvons pas deviner ce qui te chagrine...

Discussions similaires

  1. Pthread et semaphores
    Par Yabo dans le forum Linux
    Réponses: 9
    Dernier message: 30/03/2008, 00h09
  2. Semaphore (operation Z)
    Par zehle dans le forum Linux
    Réponses: 3
    Dernier message: 12/01/2005, 21h30
  3. [Amstrad] Signaux à gérer port E/S pour lire ROM
    Par Masterglob dans le forum Autres architectures
    Réponses: 7
    Dernier message: 12/01/2005, 12h03
  4. [INFO]Signaux Linux et Java
    Par el3gans dans le forum Général Java
    Réponses: 5
    Dernier message: 26/11/2004, 00h17
  5. [C#] Gérer les signaux genre ctrl+c?
    Par BleudeBromothymol dans le forum Windows Forms
    Réponses: 8
    Dernier message: 17/11/2004, 15h32

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