Non vorrei dire una stupidata, ma secondo me è la execl che aveva certe particolarità nel sostituirsi al processo (che purtroppo in questo momento la memoria mi inganna)
se utilizzi una "sleep(10);" anziché la execl vedrai che funziona... altrimenti c'è qualche parte del codice che non ci hai mostrato che crea il problema.