Browse thread
[Caml-list] Unix subdaemon, channels, filedescriptors....
-
Basile STARYNKEVITCH
- Bruno.Verlyck@i...
- Xavier Leroy
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | Bruno.Verlyck@i... |
| Subject: | Re: [Caml-list] Unix subdaemon, channels, filedescriptors.... |
Date: Wed, 17 Jul 2002 16:06:31 +0200
From: Basile STARYNKEVITCH <basile.starynkevitch@cea.fr>
I would like to close all the filedescriptors after the fork.
This is what set_close_on_exec is for, except it's after the exec.
Is it enough ? (You wrote `it fork and execs processes').
Unfortunately, the caml_out_channels_list primitive (coded in C in
ocaml/byterun/io.c), which is used in stdlib/pervasives.ml is not
published in pervasives.mli, and there is no caml_in_channels_list
primitive
May I suggest publishing this primitive in the future ocaml v3.05?
Do you mean: these two primitives ?
BTW, all this stuff was added to support Cash (now you know what is my
next suggestion :-). Since flush_all was considered of general
interest, caml_out_channels_list was integrated to the main sources to
implement it. Had flush_all not been added to Pervasives, it would
have stayed in the C part of Cash. So to get caml_out_channels_list
right now, an external declaration is enough. For
caml_in_channels_list, 20 lines of C will do (1).
Also, Unix.open_process_in and related seems to forget closing the file
descriptors in the child process,
[..]
How do I close (in Ocaml) every channel except stdin, stdout, stderr?
In the next version (and in the CVS sources), every channel opened by
Pervasives is marked by set_close_on_exec, so this problem should go
away.
Bruno.
(1) At first sight, copy caml_out_channels_list, and replace
if (channel->max == NULL) {
by
if (channel->max != NULL && channel->fd >= 0) {
(Untested).
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners