Mail Archives: cygwin/2002/01/24/10:35:41
On Thu, Jan 24, 2002 at 03:17:23PM +0100, Christophe LEITIENNE wrote:
> I found a piece of code that doesn't use all this stuff. Could it work (I
> haven't tried yet) ?
>
> int sendfd(sockfd, fd)
> int sockfd; /* UNIX domain socket to pass descriptor on */
> int fd; /* the actual fd value to pass */
> {
> struct iovec iov[1];
> struct msghdr msg;
> extern int errno;
>
> iov[0].iov_base = (char *) 0; /* no data to send */
> iov[0].iov_len = 0;
> msg.msg_iov = iov;
> msg.msg_iovlen = 1;
> msg.msg_name = (caddr_t) 0;
> msg.msg_accrights = (caddr_t) &fd; /* address of descriptor */
> msg.msg_accrightslen = sizeof(fd); /* pass 1 descriptor */
>
> if (sendmsg(sockfd, &msg, 0) < 0)
> return( (errno > 0) ? errno : 255 );
>
> return(0);
> }
This isn't supported. Control structure passing doesn't work at
all with the current implementation.
Btw., the above source code won't work on Linux, too. First of all,
the msg_accrights and msg_accrightslen members doesn't exist in the
msghdr struct (they are called msg_control and msg_controllen) and
second, file descriptors in one process have no meaning in another
process, except it's parent or child of the calling process,
coincidentally. That's somewhat dangerous.
Corinna
--
Corinna Vinschen Please, send mails regarding Cygwin to
Cygwin Developer mailto:cygwin AT cygwin DOT com
Red Hat, Inc.
--
Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple
Bug reporting: http://cygwin.com/bugs.html
Documentation: http://cygwin.com/docs.html
FAQ: http://cygwin.com/faq/
- Raw text -