questo è il thread che apre magari può aiutarvi a capire..
codice:void *rubrica(void * connectsock) { /*prototipi di funzioni per il thread safety*/ ssize_t readn(int fd, void *buf, size_t n); ssize_t writen(int fd, const void *buf, size_t n); ssize_t readline(int fd, void *vptr, size_t maxlen); struct elemrubrica app_elemrubrica; /*prototipi di funzioni*/ void estrazione(int connectsock, FILE * fp, struct elemrubrica app); void inserimento(int connectsock, FILE * fp, struct elemrubrica app); int risp; /*conterrà il valore convertito in intero della *risposta del client*/ int n; ssize_t nread; char buffer[MAXLINE]; /*buffer di lettura/scrittura*/ /*controllo sul detaching del thread*/ if((n = pthread_detach(pthread_self())) != 0) { errno = 0; fprintf(stderr, "pthread_detach error"); exit(1); } FILE * fp; /*controllo sull'apertura del file*/ if((fp=fopen("prova.txt","r"))==NULL) { fprintf(stderr, "error opening file"); exit(1); } do { /*lettura della scelta dell'operazione dal client*/ if((nread=readline((int)connectsock,(void *)buffer,MAXLINE)) == 0) return; /* connessione chiusa dal client */ risp=atoi(buffer); switch(risp) { case 1: estrazione((int)connectsock, fp, app_elemrubrica); break; case 2: inserimento((int)connectsock, fp, app_elemrubrica); break; case 0: /*uscita*/ break; default: /*tutti gli altri casi*/ break; } }while(risp != 0); fclose(fp); }

Rispondi quotando