Bonjour,
J'ai besoins de votre aide car je dois utiliser la foncion pthread_create mais a chaque fois que je l'utilise il met met cette erreur:
"error: passing argument 3 of ‘pthread_create’ from incompatible pointer type
/usr/include/pthread.h:227: note: expected ‘void * (*)(void *)’ but argument is of type ‘void (*)(int)’
make: *** [cnct.o] Erreur 1"
Voici le code :
(le contenu de la fonction repeater n'est pas très important, j'utilise pthread_create dans manage_cnct)
J'ai passer 2 heure a modifier mon code pour que ca marche mais rien n'y fait, j'ai aussi chérché des exemple d'utilisation de pthread_create sur le net mais ca ne m'a pas aidé non plus.Code:/* Cr�ation d'un client */ /* Version stupide. Pas de creation de thread, Le serveur ne peut plus accepter de connexion car il g�re l'interaction avec le premier client. */ int manage_cnct(int fd) { int c; pthread_t t1; pgrs_in(); pthread_create(&t1,NULL,&repeater,(void*)fd); pthread_join(t1,(void**)&c); if (c==-1) { printf ("la fonction repeateur s'est mal passée"); } pgrs_out(); } static int sockets[MAX_CONNECTION]; /* tableau initialis� a zero */ static void add_socket(int fd) { int i; pgrs_in(); for (i=0; i<MAX_CONNECTION; i++) { if (sockets[i] == 0) { sockets[i] = fd; break; } } assert(i!=MAX_CONNECTION); pgrs_out(); } static void del_socket(int fd) { int i; pgrs_in(); for (i=0; i<MAX_CONNECTION; i++) { if (sockets[i] == fd) { sockets[i] = 0; break; } } assert(i!=MAX_CONNECTION); pgrs_out(); } /* Un client */ static void repeater(int sckt) { char buf[MAX_BUFFER]; int nbc, i; const char WELCOME[] = "mtcs : bienvenu\n"; pgrs_in(); write(sckt, WELCOME, strlen(WELCOME)); pgrs("enregistrement d'une socket"); add_socket(sckt); while (1) { pgrs("attente read"); nbc = read(sckt, buf, MAX_BUFFER); if (nbc <= 0) { pgrs("fin lecture client"); pgrs("desenregistrement d'une socket"); del_socket(sckt); close(sckt); pgrs_out(); return; } pgrs("boucle ecriture"); for(i=0; i<MAX_CONNECTION; i++) if (sockets[i]) write(sockets[i], buf, nbc); pgrs("fin boucle ecriture"); } } /* Cr�ation d'un client */ /* Version stupide. Pas de creation de thread, Le serveur ne peut plus accepter de connexion car il g�re l'interaction avec le premier client. */ int manage_cnct(int fd) { int c; pthread_t t1; pgrs_in(); pthread_create(&t1,NULL,&repeater,(void*)fd); pthread_join(t1,(void**)&c); if (c==-1) { printf ("la fonction repeateur s'est mal passée"); } pgrs_out(); }
Merci d'avance pour vos réponses
-----