This is the mail archive of the
cygwin
mailing list for the Cygwin project.
RE: 1.5.19-3 parent socket binding remains after closing when spawning child process
- From: "Dave Korn" <dave dot korn at artimi dot com>
- To: <cygwin at cygwin dot com>
- Date: Fri, 20 Jan 2006 17:22:50 -0000
- Subject: RE: 1.5.19-3 parent socket binding remains after closing when spawning child process
Martin wrote:
> Well, this is a strange one.
> I open a socket in a parent process, bind it and
> listen.
> I set the socket to close-on-exec with the FD_CLOEXEC
> flag.
> A child process is spawned, which doesn't inherit the
> socket.
> I then close the server socket in the parent process.
> For a laugh, I attempt to connect to the port
> associated with the server socket. I would expect
> this connection request to fail, since I just closed
> the socket. It doesn't.
>
> The attached test case illustrates this.
> Please let me know if I'm doing something wrong.
I can't say why yet, but server_sock is still open in the child. Adding an
explicit "close(server_sock)" just before the call to execlp in the child-side
of the fork clause fixes it. Maybe FD_CLOEXEC isn't implemented or working
properly on cygwin, I haven't looked further yet.
cheers,
DaveK
--
Can't think of a witty .sigline today....
--
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/