non ho studiato il tuo codice ma vorrei lo stesso suggerirti:
prima di tutto ti consiglio di scaricarti anjuta. Se hai un makefile puoi indicare questo come progetto ed eseguire il debugging passo passo utilizzando sempre gdb ma visuale.
In alternativa, se preferisci, puoi usare code::block, in questo caso devi crearti un progetto ad hoc.
secondo piuttosto che utilizzare la coppia fork/exec utilizzerei sempre popen (che d'altronde questo fa al suo interno) ed hai un controllo più immediato del flusso.
ciao
sergio