Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "Pub.h"
- #include <iostream>
- #include <fstream>
- int main(){
- int idQ,idShm,pgid;
- MESSAGE messageRead;
- ifstream inStrm("includes/pub.dat",ios::in);
- PUBLICITE *pShm;
- //recupration id de queue de message
- if ((idQ = msgget(IDQ,0)) == -1){
- TraceErr(__LINE__,__FILE__,"(Pub)Err. de msgget()");
- exit(1);
- }
- // idShm = createShm(IDSHM,sizeof(PUBLICITE));
- if((idShm = shmget(IDSHM,sizeof(PUBLICITE),0)) == -1){
- TraceErr(__LINE__,__FILE__,"Erreur creation mémpoire partagée");
- };
- // attache_Mem((PUBLICITE**)&pShm,idShm);
- Trace("(Pub)--Attachement de la memoire partage");
- 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
- {
- 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
- exit(1);
- }
- if( msgrcv(idQ,&messageRead,sizeof(MESSAGE)-sizeof(long),getpid(),0) == -1){
- TraceErr(__LINE__,__FILE__,"(pub)Err. de msgrcv");
- }
- Trace("(pub)Message recu -- gpid transmi : %d",messageRead.idProcess);
- pgid = messageRead.idProcess;
- Trace("(pub)recupération des pubs");
- if(!inStrm.is_open()){
- TraceErr(__LINE__,__FILE__,"erreur ouverture fichier pub");
- }
- PUBLICITE data;
- data.secondes = 0;//on doit pouvoir passe récupérer le nombre de secondes dans le fichier pub.dat
- char buffer[255];
- int i =0;
- while(i<10){
- inStrm.getline(buffer,255);
- Trace("(pub) lut dans le fichier : %s",buffer);
- Trace("(pub)attachement de la pub dans lea mémoire partagée.");
- strcpy(data.pub,buffer);
- Trace("(pub) data.pub : %s - data.secondes : %data.secondes",data.pub ,data.secondes);
- *pShm = data;
- // sleep(3);
- Trace("(pub)envoi du signal SIGURS1");
- kill(-pgid,SIGUSR1);
- // tmp->pSvt = (PUBLICITE*) malloc(sizeof(PUBLICITE));
- // tmp=tmp->pSvt;
- //une fois en fin de fichier, on recommence la lecture.
- if(inStrm.eof()){
- inStrm.seekg(0,ios::beg);
- }
- i++;
- }
- inStrm.close();
- }
Advertisement
Add Comment
Please, Sign In to add comment