How about this for passing file descriptors?

Corinna Vinschen vinschen@redhat.com
Mon Jul 15 04:10:00 GMT 2002


On Mon, Jul 15, 2002 at 08:05:01PM +1000, Robert Collins wrote:
> 
> ----- Original Message -----
> From: "Corinna Vinschen" <vinschen@redhat.com>
> To: <cygwin-developers@cygwin.com>
> Sent: Monday, July 15, 2002 6:31 PM
> 
> ...  Each of them needs some different
> > strategy so I wonder if it makes sense to create a new virtual fhandler
> > method to do the job.  Anyway, what I'm implementing is the following:
> 
> I think it does. Just off the cuff, we need a struct that has transfer
> information -
> struct transfer { void *buffer; int buflen; HANDLE *handles; int
> handlecount;}; and a couple of virtual functions for the fd class -
> 
> transfer prep_transfer () const;
> void complete_transfer (transfer const &);

Perhaps that's not even needed.  We already have a couple of methods
which are involved when duplicating handles between processes, namely
dup(), fixup_before_fork(), fixup_after_fork(), fixup_after_exec().

Basically they are only restricted in their functionality since they
only get the *parent* process handle.  If we generalize this stuff
to get a *source* and a *destination* process handle instead, the
whole stuff would be available for situations besides fork/exec...

Ah yes, I didn't take a closer look but if some of these methods
expect to be called in a fhandler inside of the fdtab, that expectation
would have to be corrected, too.

Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Developer                                mailto:cygwin@cygwin.com
Red Hat, Inc.



More information about the Cygwin-developers mailing list