I've pushed code to close _all_ unused fds in each new fork, and to end communication gracefully. I do not understand how the failing fds are known to **select**.
I think this is a bug in a Nim library. But if no-one can help me figure this out, I'll try switching from pipes to sockets (maybe next weekend).
