caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Olivier Andrieu <oandrieu@nerim.net>
To: Christoph Bauer <christoph.bauer@lmsintl.com>
Cc: caml-list@inria.fr
Subject: Re: [Caml-list] in_channel_of_descr questions
Date: Wed, 25 Mar 2009 14:42:32 +0100	[thread overview]
Message-ID: <95513600903250642h17618274sa79970e82234d00f@mail.gmail.com> (raw)
In-Reply-To: <BB046CA812535C45BD0029AA9D04BA790627648E@KL-SRV57.lmsintl.com>

Hi,

On Wed, Mar 25, 2009 at 13:37, Christoph Bauer
<christoph.bauer@lmsintl.com> wrote:
> Hello,
>
> I have some questions concerning in_channel_of_descr: my program
> has a list of sockets. I need the sockets itself for a select-Loop
> and an in_channel for the convenient input_line function. At the end,
> which one should i close? Just the socket, just the channel or both?

On unix, you should close either one of them, but not both. The
filedescriptor is shared, so closing the socket
or the channel will close the file descriptor.

> On Windows I tried to create many in_channels, one for each block
> I read. Then I get soon an  "Too many open files in the system" error.
> In win32unix/channels.c I see an _open_osfhandle() call for each
> in_channel_of_descr. On unix the same program runs fine (as expected).
> So is there a different approach needed for windows e.g. close just
> the socket on unix, but close socket and in_channel
> on windows? (In any case I'll remove the repeated call of
> in_channel_of_descr...).


yes on windows, you need to close the channel. Calling
in_channel_of_descr will indeed call _open_osfhandle()
which allocates an integer fd in the C runtime to represent the Win32
handle. If you close the socket and not the channel, this CRT fd stays
allocated and you eventually run out of fd. If you close the channel,
the CRT fd will be closed, and that will close the Win32 handle too.

-- 
  Olivier


      reply	other threads:[~2009-03-25 13:42 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-03-25 12:37 Christoph Bauer
2009-03-25 13:42 ` Olivier Andrieu [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=95513600903250642h17618274sa79970e82234d00f@mail.gmail.com \
    --to=oandrieu@nerim.net \
    --cc=caml-list@inria.fr \
    --cc=christoph.bauer@lmsintl.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).