Salve,
ho creato dinamicamente una lista linkata...nel mio caso però l' aggiornamento della testa della lista non lo posso fare nella funzione dove inserisco il nuovo elemento,in quanto nel mio codice faccio uso della primitiva fork ed il figlio creato si incarica di aggiungere l'elemento nella lista mentre il padre si incarica di aggiornare la testa della lista in modo tale che tutti i figli possano vedere il giusto valore della testa.
Detto ciò quando mando in esecuzione il programma ho un MALEDETTO "Segmentation fault" proprio quando il padre va ad eseguire la funzione di aggiornamento testa...
Ora vi posto il codice:
struct rich{
int richfd; // file descriptors
int frequenza;
struct rich* succ;
struct risp* rispostarelativa;
};
typedef struct rich* richiesta;richiesta inserimentorichieste(int i,richiesta* start,char* buff){
richiesta q;
char nome1[LUNGH1]="./cache/richiesta";
char nome2[LUNGH2]=".txt";
char* n1;
n1=itostring(i);
strcat(nome1,n1);
strcat(nome1,nome2);
q= (richiesta)malloc(sizeof(struct rich));
if((q->richfd=open(nome1,O_RDWR | O_CREAT,S_IROTH | S_IWOTH))<0){
printf("errore nella creazione del file: %s\n",strerror(errno));
}
if((write(q->richfd,buff,strlen(buff)))<0){
printf("errore nella scittura del file: %s\n",strerror(errno));
}
close(q->richfd);
return q;}void aggiornatestarich(richiesta* testa,richiesta q){
q->succ=*testa;
*testa=q;
}Non so quale delle 2 è valida,ma vi posso dire che:void aggiornatestarich(richiesta* testa,richiesta* q){
*q->succ=*testa;
*testa=*q;
}
la seconda funzione di aggiornamento testa mi da un errore di compilazione :"error: request for member ‘succ’ in something not a structure or union"
mentre la prima non da errori di compilazione,ma accade quanto detto sopra....
Vi prego datemi una mano....
GRAZIE