This is the mail archive of the cygwin mailing list for the Cygwin project.

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Usage of _exit(0) closes fd's of parent process

On Sun, Apr 11, 2010 at 01:48:51AM -0400, wrote:
>Hi.  I'm having an unusual problem in a program I'm trying to get
>working in cygwin.  My program fork()'s a child process to do a
>hostname lookup, establishes a tcp connection in the parent, then has
>the child _exit(0) itself.  For some reason I don't understand, _exit
>is not just closing the fd's of the child, but of the parent as well.
>From my understanding, _exit is supposed to close the fd's of the
>process it is run from only.
>The program works correctly (That is to say, stays connected) if I
>comment out the _exit and instead have it while (1) { sleep (10000); }.
>Obviously I would like to be able to kill off the child at some point,
>but for testing this proved to me that either my expectation of how
>_exit is supposed to work in cygwin is flawed, or _exit is.
>Please let me know if I'm using this function call incorrectly, and
>what behavior I should be expecting.  If my expectation of how _exit is
>supposed to act is correct, let me know and I'll file a bug report.

While it is theoretically possible to close handles in the parent process
it would be very unsual for Cygwin, or any program, to do something like
that.  And, in fact, Cygwin doesn't try to close handles in the parent
when it exits.

You need to go back and read and then,
take a step back, and report the problem that you're seeing rather than
your conclusions about the problem.  For instance, what does "stays
connected" mean?  Are you using sockets, pipes, a file, shared memory,


Problem reports:
Unsubscribe info:

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]