Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在C中跟踪子进程的生命周期#_C# - Fatal编程技术网

C# 在C中跟踪子进程的生命周期#

C# 在C中跟踪子进程的生命周期#,c#,C#,我们工作的一部分是与ERP系统接口。通过在ERP系统的基本目录中调用名为IMPAUT.exe的特定exe,该系统中的某些流程可以实现自动化。我将ERP子程序ID传递给IMPAUT,它就会启动 现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动一个子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动了子进程,IMPAUT就会死亡。子进程将继续存在一段时间。子进程只有在完成命令并注销ERP系统后才会死亡 问题是,当子进程仍然处于活动状

我们工作的一部分是与ERP系统接口。通过在ERP系统的基本目录中调用名为IMPAUT.exe的特定exe,该系统中的某些流程可以实现自动化。我将ERP子程序ID传递给IMPAUT,它就会启动

现在,IMPAUT所做的是确定ERP安装是客户端安装还是独立安装,然后IMPAUT启动一个子进程。此子进程为IMPACT.exe或IMPCSC.exe。一旦IMPAUT启动了子进程,IMPAUT就会死亡。子进程将继续存在一段时间。子进程只有在完成命令并注销ERP系统后才会死亡

问题是,当子进程仍然处于活动状态时,我不能再次调用IMPAUT,因为只有一个子程序的实例可以登录到ERP系统。我也无法监控IMPAUT何时死亡,因为子进程在IMPAUT死后很长一段时间内仍然有效


我需要确定调用它的特定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