Se serve altro....grazie in anticipo per l'aiutocodice://Variabili globali long id_ut,id_mes; int u_cont; int main(int argc, char *argv[]){ key_mes=17; key_ut=89; ...... /*** Qui faccio assegnazioni ***/ //Creo memoria condivisa per utenti e messaggi //Messaggi id_mes=shmget(key_mes,1024,IPC_CREAT|0666); //Utenti id_ut=shmget(key_ut,1024,IPC_CREAT|0666); if(id_mes ==-1){ printf("Errore nella creazione della memoria condivisa per i messaggi.\n"); exit(0); } if(id_ut ==-1){ printf("Errore nella creazione della memoria condivisa per gli utenti.\n"); exit(0); } ...... //Visualizzo il menu sMenu(); } //Il menu da varie opzioni tra le quali il login //Nel login faccio la fork exec; void loggaUtente(){ static char *argv[5] ; static char arg0[] = "a.out"; unsigned long *address=malloc(sizeof(long)); *address =id_ut; unsigned long *addressb=malloc(sizeof(long)); *addressb=id_mes; unsigned int *addressc=malloc(sizeof(int)); *addressc=u_cont; pid_t pid=fork(); switch(pid){ case 0: /* Questo e' il processo figlio */ argv[0] = arg0; argv[1] = ( char * ) address; argv[2] = ( char * ) addressb; argv[3] = ( char * ) addressc; argv[4] = 0; execv( "../Client/a.out", argv); /* * Se il controllo e' giunto qui allora si e' verificato * un errore nella chiamata execv(). */ fprintf( stderr, "%s: execv()\n", strerror(errno) ); break; case -1: /* La chiamata fork() e' fallita */ fprintf( stderr, "%s: La fork ha fallito\n", strerror(errno)); exit ( EXIT_FAILURE ); break; } }![]()