To avoid this, register the pids in a list and, on SIGCHLD, set up a
bottom-half that would go through the pids and reap them.
Signal handler now waitpid()s only for registered children, so it can't
steal zombies anymore.
Since I'm at it, I'm moving iohandler stuff out of vl.c. The new
file isn't a perfect place to add the child watcher, but it's arguably
better than vl.c.
Pretty much anything's better than vl.c.
You silently drop unused IOHandlerRecord member ufd. Dropping junk
good, silence not so good.