如何创build一个不是创build过程的subprocess?

我有两个进程,A和B.在某个时间点,A创buildB.创buildB之后,如果A的进程被杀死,我希望B仍然在。

我正在使用CreateProcess()来创buildB,而我似乎无法find任何方法来使它在没有孩子的情况下创build过程。 同样的事情与ShellExecuteEx(),但我可能会错过一些标志。

有谁知道我可以用来做什么?

编辑:我忘了提及这两个进程需要一个处理或进程ID到另一个

你可以尝试这个过程创建过程C,它创建过程B,然后过程C将立即结束(终止)。 在进程B中,只存在关于直接父进程的信息(没有更多运行的C的进程ID),而不是关于进程A的信息。所以“如果A的进程树被终止”,进程B可能会保持运行。

例如,启动Process Explorer(请参阅http://technet.microsoft.com/en-us/sysinternals/bb896653.aspx ),然后启动Total Commander。 从总指挥官,你开始cmd.exe。 从cmd.exe启动notepad.exe。 然后在cmd.exe中输入“exit”。 终止cmd.exe后,您可以看到notepad.exe将不再显示在Total Commander(totalcmd.exe)下。 在Total Commander(totalcmd.exe)的Process Explorer“Kill Process Tree”中选择后,您可以看到notepad.exe保持运行状态。

您可以在createprocess API中将paramaeter dwcreationflags设置为DETACHED_PROCESS。