C# 在C中跟踪子进程的生命周期#
我们工作的一部分是与ERP系统接口。通过在ERP系统的基本目录中调用名为IMPAUT.exe的特定exe,该系统中的某些流程可以实现自动化。我将ERP子程序ID传递给IMPAUT,它就会启动 现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动一个子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动了子进程,IMPAUT就会死亡。子进程将继续存在一段时间。子进程只有在完成命令并注销ERP系统后才会死亡 问题是,当子进程仍然处于活动状态时,我不能再次调用IMPAUT,因为只有一个子程序的实例可以登录到ERP系统。我也无法监控IMPAUT何时死亡,因为子进程在IMPAUT死后很长一段时间内仍然有效C# 在C中跟踪子进程的生命周期#,c#,C#,我们工作的一部分是与ERP系统接口。通过在ERP系统的基本目录中调用名为IMPAUT.exe的特定exe,该系统中的某些流程可以实现自动化。我将ERP子程序ID传递给IMPAUT,它就会启动 现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动一个子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动了子进程,IMPAUT就会死亡。子进程将继续存在一段时间。子进程只有在完成命令并注销ERP系统后才会死亡 问题是,当子进程仍然处于活动状
我需要确定调用它的特定IMPUT进程的子进程何时死亡。因此,从父进程,我需要在父进程死亡之前获取它调用的子进程,并监视该子进程的生存期。可能在下面代码可能会有所帮助
AppDomain.CurrentDomain.DomainUnload += new EventHandler(CurrentDomain_DomainUnload);
void CurrentDomain_DomainUnload(object sender, EventArgs e)
{
// Here you can write to some file about te status
}
或
我想您需要使用System diagnostics命名空间中的Process.getProcessByName()来查找该进程,并使用Exit code属性检查它是否仍在运行。
如果ERP系统使用退出代码正常工作,那么您还可以检查是否存在工作/故障。
如果名称不唯一,请查看Process.main模块和Process.Module属性,并对所有进程使用Process.getProcesss。我不能使用Process.getProcessByName(),因为我不知道子进程的名称。其次,可能有同名的子进程,与我的IMPAUT父进程无关。谢谢你的代码。如何使用此代码获取特定父级的子级。我将如何实现这一点?
Process.GetCurrentProcess().Exited event