在C中创建新进程和子进程之间的区别(Windows)

Sun*_*nny 2 c windows multiple-processes

我想从代码本身创建一个exe的新进程,这样我就可以有两个并行的进程.

但是,我希望他们是独立的过程,而不是亲子.

有没有办法在C(Windows)中执行此操作?

wj3*_*j32 6

在Windows中,进程没有父进程.有些工具会读取InheritedFromUniqueProcessId值,但这并不能告诉您哪个进程启动了您的进程.它只告诉您继承句柄和其他属性的位置.但实际上,此值通常设置为启动子进程的进程的ID.

在Vista及更高版本中,您可以InheritedFromUniqueProcessId通过CreateProcess使用STARTUPINFOEX适当填充的结构调用来更改值:使用创建属性列表InitializeProcThreadAttributeList,并使用添加 PROC_THREAD_ATTRIBUTE_PARENT_PROCESS属性UpdateProcThreadAttribute.

在XP上,没有正式的方法可以做到这一点.您可以尝试使用NtCreateProcessRtlCreateUserProcess,但这些不能正确设置Win32子系统,因此您的程序可能无法运行.