2010-04-11 4 views
1

Есть ли способ, которым я могу иметь ветвь ветки в свой собственный независимый процесс? Я знаю, что есть функция CreateProcess, но насколько я могу судить, вы можете запускать с ней внешние приложения. Это то, о чем я прошу вообще?C++ поток для отдельного процесса

ответ

3

Это невозможно под Windows. На платформах Posix желаемый эффект может быть достигнут fork() ing.

+0

Не работает 'fork()' в Windows? – sbi

+1

Я считаю, что Cygwin обеспечивает реализацию, и этот ответ, данный Джедом Смитом, немного более проницателен, чем мой: http://stackoverflow.com/questions/1814903/running-fork2-from-windows-with-cygwin-possible –

+1

Ядро Windows знает, как «fork()», но, насколько я знаю, это недоступно непосредственно через интерфейс Win32. Вы должны использовать другой API, такой как «Услуги для Unix» (http://technet.microsoft.com/en-us/library/bb496506.aspx) или Cygwin (http://www.cygwin.com/). –

3

Это возможно.

Вы можете вызвать CreateProcess с помощью фиктивного приложения и с флагом CREATE_SUSPENDED, чтобы он не запускался немедленно. Затем вы можете использовать VirtualAllocEx для выделения пространства памяти в созданном процессе и WriteProcessMemory для записи в него кода и данных. А затем отключите процесс, чтобы запустить его.

Вы также можете использовать CreateRemoteThread для создания процесса, выполняющегося в контексте другого существующего процесса.

Так что вы хотите сделать возможно, но это действительно не так просто сделать в среде Windows, поэтому у вас должна быть действительно хорошая причина, чтобы это сделать.

Смежные вопросы