Esta función me da error al abrir el fichero y no entiendo muy bien por qué, si alguien me puede ayudar un poco se lo agradecería eternamente :p
Código (c) [Seleccionar]
/*
* función base de los consumidores
* - cada consumidor va volcando línea a línea el contenido del buffer
* en el fichero cuyo nombre se le pasa como parámetro
*/
void *consumidor(void *arg)
{
int fin = 0;
char *s = arg, *b;
pthread_t id;
FILE *f;
f = fopen(s, "w");
if (f == NULL)
{
perror("Error abriendo fichero.\n");
exit(1);
}
id = pthread_self();
while(fin != 1)
{
if (buf_vacio(buf))
{
pthread_cond_wait(&cond_prod, &mtx);
}
else if (buf_vacio(buf) && terminar == 1)
{
fin = 1;
}
else
{
b = buf_quitar(buf);
fputs(b, f);
pthread_cond_wait(&cond_prod, &mtx);
}
}
fclose(f);
printf("Consumidor %lu: fichero de salida: '%s'.\n", id, (char *) s);
return (void *) 1;
}