Salve a tutti, sono nuovo nel forum. Ho un problema riguardante la condivisione della memoria, in pratica ho una situazione dove per ogni client che si colleghi al server, quest'ultimo generi dei processi figli per gestire le richieste. Il mio problema è che per memorizzare gli ID di tutti i client che si collegano ho generato una struttura del tipo:
typedef struct client{
char *id;
int sockfd;}
client;
int main(int argc, char argv[])
{
.....
size_t shmsize = sizeof(struct client)*10;
if((id_shm = shmget(IPC_PRIVATE, shmsize, IPC_CREAT | 0666))<0){
perror("shmat");
exit(1);
}
client *client;
....
if((childpid=fork())==0)
{
.....
server_echo(connfd,client,id_shm)
exit(0);
}
}
void server_echo(....)
{
....
for( ; ; )
{
client=(struct client *) shmat(id_shm,(void *)0,0);
....
}
}
}
Il mio problema è che non riesco a condividere la memoria, ogni processo figlio mantiene sempre una copia separata della struttura. Grazie mille e scusatemi se sono stato poco chiaro