如何创建一个不是其创建进程的子进程的进程?

Sin*_*men 7 windows mfc createprocess shellexecuteex

我有两个进程,A 和 B。在某个时刻 A 创建了 B。创建 B 后,如果 A 的进程被终止,我希望 B 仍然存在。

我正在使用 CreateProcess() 创建 B,但我似乎找不到任何方法让它在不成为子进程的情况下创建进程。与 ShellExecuteEx() 相同,但我可能缺少一些标志。

有谁知道我可以用什么来做到这一点?

编辑:我忘了提到两个进程都需要另一个进程的句柄或进程 ID

Ole*_*leg 2

你可以尝试进程A创建进程C,创建进程B然后进程C会立即结束(终止)。在进程 B 中,仅存在有关直接父进程(不再运行的 C 的进程 ID)的信息,而不存在有关进程 A 的信息。因此,“如果 A 的进程树被终止”,进程 B 可能会继续运行。

例如,您启动 Process Explorer(请参阅http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx),然后启动 Total Commander。从 Total Commander 中启动 cmd.exe。从 cmd.exe 启动 notepad.exe。然后在cmd.exe中输入“退出”。终止cmd.exe后,您可以看到notepad.exe将不再显示在Total Commander(totalcmd.exe)下。在进程资源管理器中为 Total Commander (totalcmd.exe) 选择“终止进程树”后,您可以看到 notepad.exe 保持运行状态。