嗨,我想将我的结构从父亲传给儿子C
(不是c#
或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++;
}