当父节点终止时,Process.Start是否终止子程序?

Chr*_*art 4 .net c# process process.start

Process.Start(exepath);当父进程结束时,程序是否以终止方式启动?我有一些奇怪的行为,并认为这可能是问题.

Rem*_*anu 6

在Windows上,子进程通常独立存在,一旦启动,它们就不依赖于父进程.您正在寻找工作对象.对于可以控制整个进程树生存期的作业,如果父进程结束,则可以确定性地终止所有子进程(通过让父进程拥有该作业,严格地说,如果作业被终止,则所有子进程都终止).没有托管的.Net API,但p-Invoke工作正常.

因此,如果您遇到意外的"奇怪行为",请确保您的流程不会在作业的上下文中启动,从而导致您的子流程也成为工作的一部分.Process Explorer可以显示进程的作业属性.


Ehs*_*san 1

对你的问题的简短回答是:不,他们没有。您必须显式地终止它们。如果您想终止已启动的进程,则可以使用 process.start 返回的句柄。像这样的东西

Process p = Process.Start("someprocess");
if (p != null)
  p.Kill();
Run Code Online (Sandbox Code Playgroud)