0

Cこんにちは、 (notc#または)で父から息子に構造を渡したいと思いc++ます。私の問題は、共有メモリ内と共有メモリ外でデータの解析を行うことです。これを行う必要があるため、使用できないFIFOか、他のシステム

あなたは構造体を想定することができoperazione 、私はこの配列を使用しますoperazione structure[number]

typedef struct {
    int id;
    char operatore[1];
    int operandoprimo;
    int operandosecondo;
    int risultato;
    int risultato;
    int semid;
} operazione;

申し訳ありませんが、いくつかのコメントはイタリア語ですが、簡単に理解できます。

お父さん:

 /* CREO ZONA DI MEMORIA */
   int shmid = cMemC(KEY_MEMORIA,righeoperazioni*(sizeof(operazione)),IPC_CREAT|0666);    
    // 

         // attacco memoria condivisa
          shm =attacMemC(shmid,NULL,0);

          s = shm;

          for(exa=0 ; exa<righeoperazioni ; exa++){

                sprintf(*s++,"%d",comandi[exa].id);
                sprintf(*s++,"%s",comandi[exa].operatore);
                sprintf(*s++,"%d",comandi[exa].operandoprimo);
                sprintf(*s++,"%d",comandi[exa].operandosecondo);
                sprintf(*s++,"%d",comandi[exa].risultato);
                sprintf(*s++,"%d",comandi[exa].semid);
                    }
           s=NULL;

    // 

息子へ:

operazione comandif[righe];

/* CREO ZONA DI MEMORIA */
    int shmid = cMemC(KEY_MEMORIA,oper*(sizeof(operazione)),IPC_EXCL|0666);   
    // attacco memoria condivisa
    shmf =attacMemC(shmid,NULL,0);
    ss = shmf;
    exa=0;
    for(ss=0 ; ss != NULL ; ss++){
                            sprintf(temp,"%d",*ss);
                comandif[exa].id=atoi(temp);
                sprintf(temp,"%d",*ss);
                sprintf(comandif[exa].operatore,"%s",temp);
                sprintf(temp,"%d",*ss);
                comandif[exa].operandoprimo=atoi(temp);
                sprintf(temp,"%d",*ss);
                comandif[exa].operandosecondo=atoi(temp);
                sprintf(temp,"%d",*ss);
                comandif[exa].risultato=atoi(temp);
                sprintf(temp,"%d",*ss);
                comandif[exa].semid=atoi(temp);
                exa++;
           }
4

1 に答える 1