CreateProcess:创建进程句柄时出错

本文关键字:出错 进程句柄 创建 CreateProcess | 更新日期: 2023-09-27 18:19:43

最近我在C#中开发了一个应用程序,并使用Mono在Linux上运行它,我专门在Debian 6上进行测试。

2-8小时后,应用程序不断显示警告,即CreateProcess:创建进程句柄时出错。这个警告以前已经发布在多个mono-devel邮件列表上,包括mono-dev和mono-bugs,mono-devels列表中的一个特定帖子是http://mono.1490590.n4.nabble.com/Mono-CreateProcess-error-td1525870.html在其他几个地方也谈到了这一警告。

我的应用程序每分钟至少创建10个进程,通常运行时间不到一秒半,我也称之为进程。WaitForExit()并处理。Dispose()试图帮助规避其他电子邮件中建议的错误,正如我在谷歌上看到的那样,但不幸的是,它没有帮助。

当错误发生时,将导致无法创建任何未来的进程。

我想知道是否有人有任何潜在的解决方案,它发生在2.10.2和2.10.6上。

我在这里看到了这个测试/示例案例:

http://lists.ximian.com/pipermail/mono-bugs/2009-September/092261.html

我把它粘贴在这里是为了方便使用:

System.Diagnostics.Process[] processes = new System.Diagnostics.Process[4096];
for (int i = 0; i < 4096; i++)
{
    Console.WriteLine("Starting: " + i.ToString());
    processes[i] = new System.Diagnostics.Process();
    processes[i].StartInfo.FileName ="echo";
    processes[i].StartInfo.Arguments = "'"hello mono '";";
    processes[i].Start();
    System.GC.Collect();
    System.GC.WaitForPendingFinalizers();
    System.Threading.Thread.Sleep(10);
}

很抱歉再次问这个问题,如果已经问了,但我还没有找到一个有效的解决方案。

谢谢!

CreateProcess:创建进程句柄时出错

我认为您正在使用文件句柄来与每个进程进行对话。

请参阅此处:

2009年9月06日08:59:10 UTC Joakim Sandström写道:

抱歉有双重邮件。

这是通过创建第二个循环来解决的,该循环用于HasExited。然后强制(try-catch)运行。关闭已退出。

这对你有用吗?我相信调用Process.Close()会关闭打开的文件句柄。