Explico mas o menos que hace el programa. NO uso fork !!!
Cada vez que un usuario se conecta al server el server crea 1 hilo. Es
decir se crea 1 hilo por usuario.
El error me sale cuando creo el hilo mediante la llamada
pthread_create. Creo que esta en los argumentos 1 y 4. a la fc
pthread_create se le pasan 4 argumentos.
$ el valor indicado por el subíndice no es ni matriz ni puntero
Es evidente que le estoy pasando cualquier verdura a los argumentos 1 y 4.
Ese es el error cuando lo compilo. Estoy usando estructuras de arrays
(estan definidas en network.h)
Para no escribir tooodo el codigo adjunto solamente la parte de
creacion de hilos que es donde estoy metiendo la pata: pthread_create
/*************** server.c ***********************/
for (;;) {
user[thread_count].number_user = malloc (tid);
if ((*user[thread_count].number_user = accept(listenfd, (struct
sockaddr *) &struc_server, &t_server)) < 0) {
res = pthread_create(tid[thread_count].username, &thread_attr,
passage, user[thread_count].username);
if (res != 0) {
printf("error en pthread_create()");
exit(-1);
}
thread_count++;
printf("Nueva conexion desde: %s\t-\t",
inet_ntoa(struc_server.sin_addr)); //muestra la IP del cliente
/*********************** network.h ************************/
int thread_count;
pthread_t tid;
pthread_attr_t thread_attr;
void *passage(void *arg); //fc passage que retorna un argumento
struct struc_user {
char username[100]; //m usado en pthread_create
int *number_user; //m usado en el accept
};
PD: passage es la funcion del hilo que la tengo en network.c, que es
el argv 3 del pthread_create
--
/* Leonardo Rios
* rios[dot]lj[at]gmail[dot]com
*/