Unfortunately "system" does not allow me other flexibility I need.
Update: I do have the perl cookbook. It is quite useful. I know about shutdown, too. The problems are that 1) "system" does not let me launch multiple children and track them by waiting for the DIE signals and 2) some of the sockets are not created by IO::Socket but by modules written by others.
The query was why the close-on-exec does not seem to work. I know that I could keep track of every socket I create and close it, but I'd like to know if there is some accidental way I am foiling the close-on-exec.