【发布时间】:2017-05-21 20:23:00
【问题描述】:
我正在从Process.Start() 呼叫qaac.exe(AAC 编码器)。 qaac.exe 程序在编码时输出到同一行。我不确定它的技术术语是什么,但它会导致程序即使处理完文件也不会退出。这是我的代码:
string output = null;
var proc = new Process();
proc.StartInfo.FileName = "qaac.exe";
proc.StartInfo.Arguments = "-v256 -q2 file.wav";
proc.StartInfo.WorkingDirectory = @"C:\";
proc.StartInfo.CreateNoWindow = true;
proc.StartInfo.RedirectStandardOutput = true;
proc.StartInfo.RedirectStandardError = true;
proc.StartInfo.UseShellExecute = false;
proc.Start();
output = proc.StandardOutput.ReadToEnd();
output += "\r\n";
output += proc.StandardError.ReadToEnd();
proc.WaitForExit();
如果我在上面的代码中将-s 参数(抑制控制台消息)传递给qaac.exe 应用程序,它可以正常工作。所以我的问题是如何从一个写入控制台窗口同一行的外部程序中获取输出?
【问题讨论】:
-
参考this link第二个答案(14+)
-
根据您发布的小代码和您描述的行为,几乎可以肯定“qaac.exe”程序同时写入标准输出和标准错误,并且由于您尝试同时读取两者, “qaac.exe”进程死锁。有关如何修复,请参阅标记的重复项。如果您认为自己有一些不同的问题,请改进您的问题,以便它包含一个很好的minimal reproducible example,它可以可靠地重现问题。
标签: c#