in reply to (MeowChow) Re: 65 is the magic number!
in thread 65 is the magic number!

I am running 2000, but the file descriptor max idea is interesting. I'm actually wanting to get rid of the fd's after I get rid of the child process, but I can't seem to make them go away unless I close the server.

Even at 255, I'll crap out at some point unless I can get rid of them when I exit the child.

Any ideas on how to nuke em?

D

  • Comment on Re: (MeowChow) Re: 65 is the magic number!

Replies are listed 'Best First'.
(MeowChow) Re3: 65 is the magic number!
by MeowChow (Vicar) on May 14, 2002 at 04:28 UTC
    Forking under Win32 is emulated; a child process is not actually created. That's probably why the fd's are not going away. See perlfork.
       MeowChow                                   
                   s aamecha.s a..a\u$&owag.print

      Hmm, I don't think I'm following you.

      Lemme see:

      I'm forking, then opening a handle inside the 'child'. After I'm done processing, I'm closing the child only handle. Then I'm exiting the child (or join in ithreads I guess).

      That being the case, the handle shouldn't exist in the original thread. I think.

      And sadly, I can't close the original thread, as it's the server itself. I can get the FD number with fileno(), so I might try an explicit close.

      D

      True, it's really just ithreads. So, that being the case is there no way to drop an FD once you're done with it? Since the server is running in the primary thread, is the only way to drop all those handles to drop the server? Ack.

      I'd also be happy to use spawn or process::create, but those seem to only work on external executables and not something inside the original code.

      If I only had the option of running on my AIX box, I'd be a happy camper, but this is win32 only.

      D

        No, that's not quite what I meant. You should be able to drop the handle, but I'm guessing that your code was written with the assumption that descriptors were shared rather than dup'd, so you only closed one, and not the other.
           MeowChow                                   
                       s aamecha.s a..a\u$&owag.print