I need to be able to fork() in an unknown context where various file handles are likely to be open, including db connections.
I've tried the approach of the using the fdopen functionality and closing it for 1..1024 or so, but I didn't figure that would work (and doesn't), since it just opens and closes a new filehandle. The underlying fd still is open afterwards.
$| = 1;
print "done with close.\n";
# go look at process with lsof to see if fd still open
for (my $fd=0; $fd<=1024; $fd++)
open F, "<&=$fd" or warn "Cannot reopen fd=$fd: $!";
I saw an approach with pulling in the posix module and using one of it's routines, but I hate to bring in all of POSIX just to close an fd.
Is there any reasonable way to do this? Note, I am not planning on issuing an exec(), so the $^F approach won't work.