C# 在WaitForExit C控制台应用程序上终止命令时出现问题
我通过创建新进程,使用C控制台应用程序执行Cmd命令。 面临着扼杀法国退出进程的问题 基本上,我想终止waitforexit上的命令执行。 请帮忙 代码:C# 在WaitForExit C控制台应用程序上终止命令时出现问题,c#,.net,console-application,C#,.net,Console Application,我通过创建新进程,使用C控制台应用程序执行Cmd命令。 面临着扼杀法国退出进程的问题 基本上,我想终止waitforexit上的命令执行。 请帮忙 代码: 由于您的应用程序正在创建其他进程,您需要终止整个进程树。在您的示例中,cmd正在终止整个进程树,但是cmd正在运行另一个运行perl脚本的应用程序,而这并没有终止。杀死整棵树的示例代码: 用法 方法 /// <summary> /// Kill a process, and all of its children, gra
由于您的应用程序正在创建其他进程,您需要终止整个进程树。在您的示例中,cmd正在终止整个进程树,但是cmd正在运行另一个运行perl脚本的应用程序,而这并没有终止。杀死整棵树的示例代码: 用法 方法
/// <summary>
/// Kill a process, and all of its children, grandchildren, etc.
/// </summary>
/// <param name="pid">Process ID.</param>
private static void KillProcessAndChildren(int pid)
{
// Cannot close 'system idle process'.
if (pid == 0)
{
return;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("Select * From Win32_Process Where ParentProcessID=" + pid);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
try
{
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (ArgumentException)
{
// Process already exited.
}
}
参考:
KillProcessAndChildren(process.Id);
/// <summary>
/// Kill a process, and all of its children, grandchildren, etc.
/// </summary>
/// <param name="pid">Process ID.</param>
private static void KillProcessAndChildren(int pid)
{
// Cannot close 'system idle process'.
if (pid == 0)
{
return;
}
ManagementObjectSearcher searcher = new ManagementObjectSearcher
("Select * From Win32_Process Where ParentProcessID=" + pid);
ManagementObjectCollection moc = searcher.Get();
foreach (ManagementObject mo in moc)
{
KillProcessAndChildren(Convert.ToInt32(mo["ProcessID"]));
}
try
{
Process proc = Process.GetProcessById(pid);
proc.Kill();
}
catch (ArgumentException)
{
// Process already exited.
}
}