Problema con thread c

di il
2 risposte

Problema con thread c

Ho un problema con un thread:

devo costruire un programma che lanci un demone e poi termini: FATTO.

il mio problema è che quando questo demone poi crea un thread, termina anche se non dovrebbe.

Questo è il codice del demone:
void chat_server()
{
	pthread_t main_t;
	int numThreadAttivi = 0; //Indica quanti thread worker sono stati creati.
	int creation = 0;
	
	go = 1;
	
	creation = pthread_create(&main_t,NULL,main_func,(void*)NULL);
	
	printf("Creation = %d\n",creation);
	
	while(go)
	{
		signal(SIGTERM,signal_handler);
		signal(SIGINT,signal_handler);
		fprintf(stdout,"chat_server sta girando\n");
		sleep(5);
	}
	pthread_join(main_t,NULL);
}
E questo è il codice della funzione eseguita dal thread:
void* main_func(void* arg)
{
	int master_socket;
	int sock_apt;	//Accepter
	char buf[N];	//Buffer del socket
	char* _ok;
	struct sockaddr_un tmp;
	
	//Apre Socket Master
	tmp = init(tmp,"./my_socket");
	master_socket = crea_socket(tmp);
	while(go)
	{
		//Si mette in attesa di connessioni
		printf("sto ascoltando");
		listen(master_socket,SOMAXCONN);
		//Accetta la connessione e risponde al client
		sock_apt = accept(master_socket,NULL,0);
		read(sock_apt,buf,N);
		strcpy(_ok,"Connessione Ricevuta");
		int dim = strlen(_ok);
		write(sock_apt,_ok,dim+1);
		printf("Il server ha rivecuto il messaggio: %s\n", buf);
	}
	
	return NULL;
}
Qualcuno potrebbe aiutarmi a capire perché se io commento la pthread_create() funziona tutto senza problemi mentre altrimenti il demone termina?

Grazie infinite

2 Risposte

  • Re: Problema con thread c

    Termina quasi sicuramente per la presenza di un'eccezione di qualche tipo.
    Devi intercettare tale eccezione e stamparla, per sapere di che si tratta
  • Re: Problema con thread c

    Trovato e risolto, grazie mille
Devi accedere o registrarti per scrivere nel forum
2 risposte