Zaibon

Untitled

Jan 15th, 2012
51
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.12 KB | None | 0 0
  1. #include "Pub.h"
  2. #include <iostream>
  3. #include <fstream>
  4. int main(){
  5.     int idQ,idShm,pgid;
  6.     MESSAGE messageRead;
  7.     ifstream inStrm("includes/pub.dat",ios::in);
  8.     PUBLICITE *pShm;
  9.  
  10.     //recupration id de queue de message
  11.     if ((idQ = msgget(IDQ,0)) == -1){
  12.         TraceErr(__LINE__,__FILE__,"(Pub)Err. de msgget()");
  13.         exit(1);
  14.     }
  15.  
  16.     // idShm = createShm(IDSHM,sizeof(PUBLICITE));
  17.     if((idShm = shmget(IDSHM,sizeof(PUBLICITE),0)) == -1){
  18.         TraceErr(__LINE__,__FILE__,"Erreur creation mémpoire partagée");
  19.     };
  20.     // attache_Mem((PUBLICITE**)&pShm,idShm);
  21.     Trace("(Pub)--Attachement de la memoire partage");
  22.     if ((pShm = (PUBLICITE*) shmat(idShm, NULL, 0)) == (PUBLICITE*) -1) //  J'attache le segment de mémoire partagée identifié par mem_ID au segment de données du processus A dans une zone libre déterminée par le Système d'exploitation
  23.     {
  24.     TraceErr(__LINE__,__FILE__,"----Erreur lors attachement de la memoire partage----");//  et je m'assure que le segment de mémoire a été correctement attaché à mon processus
  25.         exit(1);
  26.     }
  27.  
  28.     if( msgrcv(idQ,&messageRead,sizeof(MESSAGE)-sizeof(long),getpid(),0) == -1){
  29.         TraceErr(__LINE__,__FILE__,"(pub)Err. de msgrcv");
  30.     }
  31.     Trace("(pub)Message recu -- gpid transmi : %d",messageRead.idProcess);
  32.     pgid = messageRead.idProcess;
  33.  
  34.  
  35.  
  36.     Trace("(pub)recupération des pubs");
  37.     if(!inStrm.is_open()){
  38.         TraceErr(__LINE__,__FILE__,"erreur ouverture fichier pub");
  39.     }
  40.  
  41.     PUBLICITE data;
  42.     data.secondes = 0;//on doit pouvoir passe récupérer le nombre de secondes dans le fichier pub.dat
  43.     char buffer[255];
  44.     int i =0;
  45.     while(i<10){
  46.         inStrm.getline(buffer,255);
  47.         Trace("(pub) lut dans le fichier : %s",buffer);
  48.         Trace("(pub)attachement de la pub dans lea mémoire partagée.");
  49.         strcpy(data.pub,buffer);
  50.         Trace("(pub)  data.pub : %s - data.secondes : %data.secondes",data.pub ,data.secondes);
  51.         *pShm = data;
  52.         // sleep(3);
  53.         Trace("(pub)envoi du signal SIGURS1");
  54.         kill(-pgid,SIGUSR1);   
  55.         // tmp->pSvt = (PUBLICITE*) malloc(sizeof(PUBLICITE));
  56.         // tmp=tmp->pSvt;
  57.  
  58.  
  59.         //une fois en fin de fichier, on recommence la lecture.
  60.         if(inStrm.eof()){
  61.             inStrm.seekg(0,ios::beg);
  62.         }
  63.         i++;
  64.     }
  65.     inStrm.close();
  66.  
  67.  
  68. }
Advertisement
Add Comment
Please, Sign In to add comment