This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: Forking Win32 process?
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