2010-04-11 57 views
1

有没有什么办法可以让一个线程分支进入它自己的独立进程?我知道有CreateProcess函数,但据我所知,您只能使用它运行外部应用程序。我一直在要求什么?C++线程来分离进程

回答

3

这在Windows下是不可能的。在Posix平台上,预期的效果可以通过fork()获得。

+0

'fork()'不能在Windows上工作吗? – sbi 2010-04-11 19:03:45

+1

我相信Cygwin提供了一个实现,同样由Jed Smith给出的答案比我的更具有洞察力:http://stackoverflow.com/questions/1814903/running-fork2-from-windows-with-cygwin-possible – 2010-04-11 19:05:46

+1

The Windows内核知道如何“fork()”,但据我所知,这不能通过Win32接口直接访问。您必须使用其他API,例如“Services for Unix”(http://technet.microsoft.com/en-us/library/bb496506.aspx)或Cygwin(http://www.cygwin.com/)。 – 2010-04-11 19:08:31

3

这是可能的。

您可以使用虚拟应用程序和CREATE_SUSPENDED标志调用CreateProcess,以免它立即运行。然后,您可以使用VirtualAllocEx在创建的进程中分配内存空间,并使用WriteProcessMemory将代码和数据写入其中。然后取消暂停过程来运行它。

您也可以使用CreateRemoteThread创建在另一个现有进程的上下文中运行的进程。

所以你想要做什么可能,但在Windows环境下做真的不是一件简单的事情,所以你必须有一个很好的理由才能做到这一点。