ciao a tutti,
seguo il corso di sistemi distribuiti nella mia università e non riesco a creare un thread linux. Ma a me il codice pare a prova di imbecille (ovvero me), ma intanto non va!

Posto tutti il codice
codice:
struct InetClient
{
	int socket;
	struct sockaddr_in address;
	int addressLength;
};

void ClientLister (void * );


int main(int argc, char** argv)
{
	int serverSocket,clientAddrLength;
	struct sockaddr_in qualsiasi, clientAddr;
	
	qualsiasi.sin_family = AF_INET;
	qualsiasi.sin_port   = htons(4000);
	qualsiasi.sin_addr.s_addr = INADDR_ANY;
	
	serverSocket = socket(PF_INET, SOCK_STREAM, 0);	
	bind(serverSocket, (struct sockaddr *)&qualsiasi, sizeof ( qualsiasi));
	listen(serverSocket,0);
	
	while (1)
	{
		clientAddrLength = sizeof(struct sockaddr_in);
		printf("Waiting for client...\n");
		int clientSocket = accept(serverSocket, (struct sockaddr *)&clientAddr, &clientAddrLength);
		printf("Client connected\n");
	
		struct InetClient * client = (struct InetClient*) malloc(sizeof(struct InetClient*));
		client->socket  = clientSocket;
		client->address = clientAddr;
		client->addressLength = clientAddrLength;
		
		pthread_t *nuovoThread = (pthread_t*)malloc(sizeof(pthread_t));
		
		pthread_create(nuovoThread,NULL,(void*)&ClientLister,(void*)&client);
	}
	
	return 0;
}

void ClientLister(void * arg)
{
	struct InetClient client = *((struct InetClient *) arg);
	printf("Eccomi qua");
}
con telnel riesco a connettermi su questo server. Essendo sistemi distribuiti, sto coniugando socket C e thread linux in un sol colpo....
l'output aspettato da questo programma è qualcosa tipo:

Waiting for a client...
Client connected
Waiting for a client...
Eccomi qua


ma niente...sembra che il thread non parta, anzi non parte proprio...
Ho provato a fare una join, ma non parte ugualmente e la join non esulerebbe dal mio scopo...
cosa sbaglio?

Socket problemi non ne danno e la creazione dei thread non prende più di 2 righe di codice, ma intanto non va...

suggerimenti?
vi ringrazio anticipatamente