Forking Win32 process?

Christopher Faylor cgf-use-the-mailinglist-please@cygwin.com
Mon Jan 28 00:05:00 GMT 2008


On Sun, Jan 27, 2008 at 04:36:49PM -0500, Igor Peshansky wrote:
>On Sun, 27 Jan 2008, Dmitry Bely wrote:
>
>> On Jan 27, 2008 5:15 PM, Christopher Faylor
>> <cgf-use-the-mailinglist-please@cygwin.com> wrote:
>> > On Sun, Jan 27, 2008 at 01:43:13PM +0300, Dmitry Bely wrote:
>> > >Ah, is it up-to-date info and fork() really doesn't work with the
>> > >current cygwin? If so, why this is not mentioned in the docs or
>> > >somewhere?
>> >
>> > Because of our motto: http://cygwin.com/acronyms/#WJM.
>>
>> OK, do you think that updating the FAQ for this specific issue is a
>> bad idea? Who could do that?
>
>You can.  Just send a documentation patch against the latest sources to
>cygwin-patches, and it will be reviewed and (hopefully) accepted.

I don't see why not.

>> > >Is it really impossible from the technical point of view?
>> >
>> > Of course it is not impossible.  I doubt that anyone would be interested
>> > in implementing this however.  The main focus of the project is to make
>> > things work for the standard case of linking cygwin1.dll into a program
>> > and creating a "cygwin program".  Getting things like fork() working
>> > with MSVC or MinGW programs is not something that anyone really wants to
>> > do.
>>
>> Sometimes it's needed (as in my case :) but your point is taken. BTW,
>> I have seen in the archives that several years ago someone tried to
>> implement the native fork() via NT kernel call
>> NtCreateProcess()/ZwCreateProcess(). Did these efforts succeeded in
>> any way? Is there any working solution (performance is not a
>> question)?
>
>FYI, nothing prevents you from invoking CreateProcess from within the code
>even now.  The call will not understand POSIX paths, and the resulting
>process may not show up in the Cygwin process table, *and* you will not be
>able to wait() for it in quite the same way, but pure Win32 calls are
>always accessible from Cygwin programs.  Unless you need the full POSIX
>fork functionality, the MinGW fork implementation should do just as well.

He was talking about NtCreateProcess which is a different beast.  There
has been no successful implementation using NtCreateProcess.

cgf



More information about the Cygwin-developers mailing list