This is the mail archive of the
cygwin@sourceware.cygnus.com
mailing list for the Cygwin project.
Re: cygwin.dll src question: fork()
- To: cgf at bbc dot com
- Subject: Re: cygwin.dll src question: fork()
- From: newsham at lava dot net (Tim Newsham)
- Date: Wed, 29 Oct 1997 22:48:09 -1000 (HST)
- Cc: gnu-win32 at cygnus dot com
> >At the time when cygwin_fork_helper1() returns isn't the
> >child's state already a copy of the parent's state?
>
> No, actually, it isn't. The setjmp and longjmp are used to move the
> current execution point into the appropriate point in the cygwin_fork_helper1
> function to emulate a true UNIX fork().
>
> What happens is that to emulate a fork, the parent process starts the
[...]
> extends the stack to hopefully insure that the stack is large enough to
> duplicate the parent, and longjmps to the child portion of the
> cygwin_fork_helper1 routine. There it wakes up the parent and sleeps
> itself.
um.. this is a completely different setjmp/longjmp pair.
The setjmp that is jumped to from crt0 is in the cygwin_fork_helper1()
function. The __fork() function has its own setjmp/longjmp
pair that seems to add no extra functionality. Perhaps some sort
of legacy from fork implementations of past.
> http://www.bbc.com/ cgf@bbc.com "Strange how unreal
Tim N.
-
For help on using this list (especially unsubscribing), send a message to
"gnu-win32-request@cygnus.com" with one line of text: "help".