On Jan 15 09:19, Christopher Yeleigton wrote: > Summary: > Unexpected error ENOTSOCK upon closing filedes[0] obtained via socketpair > > Test case: > > #include <stdio.h> > #include <stdlib.h> > #include <sys/socket.h> > > int main(int argc, char *argv[]) > { > auto int a_fd[02]; > if(socketpair(AF_LOCAL, SOCK_STREAM, 0, a_fd)) > perror("socketpair"); > else > { > auto int an_ix = 0; > for(; an_ix < 02; ++an_ix) > if(close(a_fd[an_ix])) > { enum BufLen { BUF_LEN = 040 }; > auto char a_buf[BUF_LEN]; > perror(snprintf(a_buf, BUF_LEN, "close %d", an_ix) > 0? a_buf: > "sprintf"); }} > return EXIT_SUCCESS; } > > Error message: > close 0: Socket operation on non-socket > > (Note it occurs with filedes[0] only, even if close is called for > filedes[1] > first). > > OpenBSD does not exhibit this malfunction.
I tried your test application multiple times on XP SP2, 2003 Server x64, as well as on 2008 Server RC1. I can not reproduce the above problem. On all three machines (all running Cygwin 1.5.25-7), the sockets are closed without failure every time. Maybe that's a bad interaction with a third party product? Did you check the FAQ? http://cygwin.com/faq/faq.using.html#faq.using.bloda Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Project Co-Leader cygwin AT cygwin DOT com Red Hat -- Unsubscribe info: http://cygwin.com/ml/#unsubscribe-simple Problem reports: http://cygwin.com/problems.html Documentation: http://cygwin.com/docs.html FAQ: http://cygwin.com/faq/