Process.Start崩溃,没有异常

时间:2016-07-08 10:47:02

标签: c# linux mono process.start

我正在开发一个简单的编译器,生成IL代码之后的最后阶段是使用ilasm实用程序编译它,这是发生崩溃的地方。

以下是该方法的完整代码(稍微修改了Stack):

public static string ExecuteIL(string filename)
{
  var ilasmp = new System.Diagnostics.Process ();
  ilasmp.StartInfo.FileName = "ilasm";
  ilasmp.StartInfo.Arguments = filename;
  //Crash does not happen here:
  ilasmp.Start ();
  ilasmp.WaitForExit ();

  var p = new System.Diagnostics.Process ();
  p.StartInfo.FileName = "/usr/bin/time";
  p.StartInfo.Arguments = "mono " + filename.Replace(".il", ".exe");
  p.StartInfo.UseShellExecute = true;
  p.StartInfo.RedirectStandardOutput = true;
  p.StartInfo.RedirectStandardError = true;
  try{
    //Crash happens HERE, but for some reason the exception does not get thrown
    p.Start ();
  }
  catch{
    throw new Exception ();
  }

  string output = p.StandardOutput.ReadToEnd();
  p.WaitForExit ();

  return output;
}

只是为了说清楚:当我第一次呼叫Process.Startilasmp.Start ();)时,崩溃不会发生,但由于某种原因,这会在以后发生(p.Start ();), 而有趣的是异常不会被抛出。 或者换句话说,代码只是崩溃了。

1 个答案:

答案 0 :(得分:1)

如果您要设置

,则无法重定向错误和输出
ParDo

来自Microsoft:

  

如果要将RedirectStandardError设置为true,则必须将UseShellExecute设置为false。否则,从StandardError流中读取会引发异常。

RedirectStandardError Property

{{3}}