关闭CreateProcess生成的子流程

时间:2013-02-19 11:30:20

标签: windows winapi process subprocess createprocess

我正在使用 CreateProcess 来运行我的进程/应用程序。 目的是运行它,做某事,等待一些指示,并关闭它(使用 TerminateProcess )。

我注意到这个应用程序/进程创建了子进程。 此外,在终止创建的流程时,子流程不会终止,并且仍会保留一段时间。

我想询问是否有一个选项以某种方式杀死主进程的所有子进程。 它会导致问题,因为当我再次执行 CreateProcess 时,会有以前进程中的剩余内容,我认为它们会导致一些问题。

我真的很感谢你的帮助!

2 个答案:

答案 0 :(得分:4)

使用Windows Job Objects。工作就像过程组;一旦作业负责人(您的初始流程)终止,操作系统将负责终止作业中的所有流程。如果职业领导人崩溃,这甚至会起作用。

答案 1 :(得分:1)

使用 CreateProcess 创建流程时,您将获得 LPPROCESS_INFORMATION -pointer。 它包含进程句柄。您需要手动关闭进程,因为没有像Linux / Unix中那样的进程层次结构。

有关 PROCESS_INFORMATION -structure的信息,请参阅here了解CreateProcess和here