caml-list - the Caml user's mailing list
 help / color / mirror / Atom feed
From: Ville-Pertti Keinonen <will@exomi.com>
To: Dave Benjamin <dave@ramenlabs.com>
Cc: Caml List <caml-list@inria.fr>
Subject: Re: [Caml-list] Closing all open file descriptors
Date: Mon, 17 Sep 2007 14:00:53 +0300	[thread overview]
Message-ID: <FD97ECD8-C608-48BC-AE2D-DFA41EDCDA5B@exomi.com> (raw)
In-Reply-To: <Pine.LNX.4.63.0709131754020.24521@tenhost.net>


On Sep 14, 2007, at 1:56 AM, Dave Benjamin wrote:

>   for fd = 0 to 1024 do
>     try Unix.close (Obj.magic fd : Unix.file_descr)
>     with Unix.Unix_error _ -> ()
>   done;
>
> Is there a better way?

While I don't have a solution for your general problem (other than  
having your program launched by a known mechanism), I recommend that  
you never close the file descriptors for stdin, stdout and stderr.   
Subsequent opens will end up reusing those file descriptor numbers,  
but system libraries will still consider them valid (via libc).  This  
can cause some very strange bugs.

The safe way to detach stdio is to open /dev/null for writing, dup2  
that over stdout and stderr, open /dev/null for reading and dup2 that  
over stdin (obviously you can close the newly opened descriptors),  
thus you never run anything without valid stdio file descriptors.


      parent reply	other threads:[~2007-09-17 11:00 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2007-09-13 22:56 Dave Benjamin
2007-09-14  1:04 ` [Caml-list] " Erik de Castro Lopo
2007-09-14  6:35   ` Dave Benjamin
2007-09-14  6:48     ` Erik de Castro Lopo
2007-09-14  7:32       ` Dave Benjamin
2007-09-14  6:33 ` David Allsopp
2007-09-14  6:41   ` Dave Benjamin
2007-09-14 10:54     ` Andre Nathan
2007-09-14 10:00   ` Mattias Engdegård
2007-09-14 20:31     ` Dave Benjamin
2007-09-14 21:52       ` Oliver Bandel
2007-09-14 22:12         ` Markus E L
2007-09-15  9:15           ` Oliver Bandel
2007-09-15  9:26             ` Erik de Castro Lopo
2007-09-15 10:43               ` Oliver Bandel
2007-09-15 11:36                 ` Mattias Engdegård
2007-09-15 11:57                   ` Oliver Bandel
2007-09-15 14:27                     ` Markus E L
2007-09-15 12:16                   ` Oliver Bandel
2007-09-15 14:29                     ` Markus E L
2007-09-15 18:04                       ` skaller
2007-09-15 14:17                   ` Markus E L
2007-09-15 14:16                 ` Markus E L
2007-09-15 15:58                   ` Eric Cooper
2007-09-15 16:17                     ` Markus E L
2007-09-15 18:33                       ` skaller
2007-09-15 17:44                   ` skaller
2007-09-14 10:10 ` Gerd Stolpmann
2007-09-14 11:56 ` Oliver Bandel
2007-09-17 11:00 ` Ville-Pertti Keinonen [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=FD97ECD8-C608-48BC-AE2D-DFA41EDCDA5B@exomi.com \
    --to=will@exomi.com \
    --cc=caml-list@inria.fr \
    --cc=dave@ramenlabs.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).