If your reaper child process forks a lot of temporary children (and detaches them with setsid), the reaper process will end up with a lot of zombies. reaper should handle SIGCHLD signals from terminated orphans and wait on them at runtime.