This week only. Pastebin PRO Accounts Christmas Special! Don't miss out!Want more features on Pastebin? Sign Up, it's FREE!
Guest

Untitled

By: a guest on Apr 5th, 2012  |  syntax: None  |  size: 1.73 KB  |  views: 26  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. #include <sys/types.h>
  2. #include <sys/ipc.h>
  3. #include <sys/msg.h>
  4. #include <unistd.h>
  5. #include <stdio.h>
  6. #include <signal.h>
  7. #include <stdlib.h>
  8. #include <string.h>
  9.  
  10.  
  11.  
  12. typedef struct {
  13.         float op1;
  14.         float op2;
  15.         float resultat;
  16.         char operation;
  17.        
  18. }mess;
  19.  
  20. struct msg_struct {
  21.         long type;
  22.         pid_t pids;
  23.         mess calcul;
  24. }
  25.  
  26. =>>>C'EST LE HEADER  QUI S'APPELLE msgheader.h
  27.  
  28.  
  29. #include "msgheader.h"    /*inclusion du header contenant la structure des messages*/
  30.  
  31. #define MSGKEY    50    /* cle d'entree dans la table d'IPC (cf. ipcs)
  32.               doit etre la meme que celle du client.
  33.               Il faudrait la mettre dans un fichier
  34.               de type .h qui serait inclus par
  35.               la client et le serveur !!!!\n  []  |
  36.            */
  37.  
  38. int main (int argc,char *argv[])
  39. {
  40.    /* variables qui vont nous être utiles */
  41.    float oper1,oper2,result;
  42.    char operat;    
  43.    key_t cle;
  44.    pid_t pid_client;
  45.    struct msg_struct mes;
  46.    int msg_id;
  47.    
  48.    
  49.  
  50.    if((cle=ftok(argv[1],0))==-1)    /*création de la clé et vérification erreurs */
  51.    {
  52.        perror("Erreur \n");
  53.        exit(10);
  54.    }
  55.    
  56.    /*création de la file*/
  57.    msg_id= msgget(cle,0666|IPC_CREAT);
  58.  
  59.    while(1)
  60.    {
  61.        printf(" en attente de message ..........\n");
  62.        msgrcv(msg_id,&mes,sizeof(pid_t),1L,0);
  63.        pid_client=mes.pids;
  64.        oper1=mes.calcul.op1;
  65.        oper2=mes.calcul.op2;
  66.        operat=mes.calcul.operation;
  67.        if(operat=='+')
  68.        {
  69.            result=oper1+oper2;
  70.        }
  71.        
  72.  
  73.        mes.type=pid_client;
  74.        mes.pids=getpid();
  75.        mes.calcul.resultat=result;
  76.        
  77.        msgsnd(msg_id,&mes,sizeof(pid_t),0);
  78.    }
  79.  
  80.    return 0;
  81. }
  82.  
  83.  
  84. ET CA C'EST LE serveur.c
clone this paste RAW Paste Data