C++线程分离进程
Posted
技术标签:
【中文标题】C++线程分离进程【英文标题】:C++ thread to separate process 【发布时间】:2010-04-11 18:59:45 【问题描述】:有什么方法可以让线程分支到它自己的独立进程中?我知道有 CreateProcess 函数,但据我所知,您只能使用它运行外部应用程序。我所要求的有可能吗?
【问题讨论】:
【参考方案1】:有可能。
您可以使用虚拟应用程序和 CREATE_SUSPENDED 标志调用 CreateProcess,这样它就不会立即运行。然后您可以使用 VirtualAllocEx 在创建的进程中分配内存空间,并使用 WriteProcessMemory 将代码和数据写入其中。然后取消暂停进程以运行它。
您还可以使用 CreateRemoteThread 创建在另一个现有进程的上下文中运行的进程。
所以你想做的事是可能的,但是在windows环境中做这件事真的不是一件简单的事情,所以你必须有一个非常好的理由去做。
【讨论】:
【参考方案2】:这在 Windows 下是不可能的。在 Posix 平台上,可以通过fork()
ing 实现所需的效果。
【讨论】:
我相信 Cygwin 提供了一个实现,Jed Smith 给出的这个答案也比我的更有见地:***.com/questions/1814903/… Windows 内核知道如何fork()
,但据我所知,这不能直接通过 Win32 接口访问。您必须使用其他 API,例如“Unix 服务”(technet.microsoft.com/en-us/library/bb496506.aspx)或 Cygwin(cygwin.com)。
亚历山大是对的。 msdn.microsoft.com/en-us/library/ms682516%28v=VS.85%29.aspx
@Thomas:如果你愿意付出代价,也可以使用 Native API。
另请参阅eggheadcafe.com/software/aspnet/32040421/…,了解最近 Cygwin 实现的简短讨论。以上是关于C++线程分离进程的主要内容,如果未能解决你的问题,请参考以下文章