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++;
}