Er ikke sikker på hvorfor du vil blande prosesser (waitpid) inn i dette?
Funksjonen jeg tror du egentlig leter etter er: pthread_timedjoin_np()
Som er slik som pthread_join() bare med en timeout som du kan spesifisere.
Merk at du må ha GNU extensions i pthread-biblioteket for å bruke pthread_timedjoin_np()