A SIGCHLD pont megoldható, már csak azért is, mert tulajdonképpen nincs is rá szükség, ahogy a kapott siginfo-(k)ra sem.
Bármilyen child process-t is indítok, annak tudom a PID-jét. Ezeket tárolom egy listában. Ha beesik egy - vagy több - SIGCHLD, akkor - vagy akár periodikusan is - lehet végigiterálni a táblán és a child processeknek 0-ás signalt küldeni, ami a processeket nem bántja, de a kill() nullát ad vissza, ha a process még fut. Így pontosan tudja a program, hogy mikor melyik child process adta vissza return code-ját a parentjének, anélkül, hogy egyáltalán foglalkozna a SIGCHLD után kapott siginfo-kkal, vagy akár magával a signallal.
A meghatározatlan állapotban hagyott file descriptor viszont tényleg elég nagy gáz.