[erlang-questions] Passing Filehandles Between Processes

Paul Mineiro <>
Sat Oct 10 18:36:43 CEST 2009


I had to do this as a hack once.  I grabbed the port out of the record and
called erlang:port_connect/2 on it.

------
  #file_descriptor { module = prim_file, data = { Port, _ } } = Device,
  try
    erlang:port_connect (Port, Pid),
    ok
  catch
    error : badarg ->
      { error, badarg }
  end.
------

-- p

On Sat, 10 Oct 2009, Jayson Vantuyl wrote:

> Are there any plans to add something like gen_tcp:controlling_process
> for files?  I don't see any easy way to do it, looking at file.erl
> (and gen_tcp hands it off to some magic in inet).
>
> On Oct 9, 2009, at 4:45 PM, Scott Lystig Fritchie wrote:
>
> > Davide Marquês <> wrote:
> >
> > dm> - finally, *the process that opened the file must be alive for
> > dm> read/write operations to succeed*.
> >
> > This behavior is pretty clearly documented in the R13B02's reference
> > for
> > the file:open/2 function.  The process linking (for non-raw file
> > handles) or port linking (for raw file handles) is an important way to
> > avoid leaking file handles when processes crash.  It doesn't prevent
> > leaks if a process lives forever but never closes a file handle (or
> > socket, for that matter), but 9/10ths of a pastrami sandwich is better
> > than no sandwich.  :-)
> >
> > -Scott
> >
> > ________________________________________________________________
> > erlang-questions mailing list. See http://www.erlang.org/faq.html
> > erlang-questions (at) erlang.org
>
> --
> Jayson Vantuyl
> 
>
>
>
>
>
>



More information about the erlang-questions mailing list