Se usi pthread, dai un'occhiata alla documentazione. Se non ricordo male esiste una pthread_join() che aspetta che il thread abbia finito l'esecuzione, poi ci sono altre funzioni per il recupero del valore d'uscita.