Linux上のWineで実行するためにVisualStudioC#で開発されたGUIアプリケーションを移植しようとしています。Processクラスに問題があります。次のプログラムは、mcsでコンパイルし、monoを使用して実行すると、期待どおりに機能します。
using System.Diagnostics;
using System;
class TestProcess {
static void Main() {
Process process = new Process();
process.StartInfo.UseShellExecute = false;
process.StartInfo.FileName = "/usr/bin/find";
process.StartInfo.RedirectStandardOutput = true;
process.StartInfo.RedirectStandardError = true;
process.StartInfo.Arguments = "/sys";
process.ErrorDataReceived += new DataReceivedEventHandler(output);
process.OutputDataReceived += new DataReceivedEventHandler(output);
process.Start();
process.BeginErrorReadLine();
process.BeginOutputReadLine();
process.WaitForExit();
}
static void output(object sender, DataReceivedEventArgs e) {
Console.WriteLine(e.Data);
}
}
しかし、wineを使用して実行すると(Wineの下にMono for Windowsをインストールしました)、次の例外で失敗します。
Unhandled Exception: System.InvalidOperationException: Standard error has not been redirected or process has not been started.
at System.Diagnostics.Process.BeginErrorReadLine () [0x00000] in <filename unknown>:0
at (wrapper remoting-invoke-with-check) System.Diagnostics.Process:BeginErrorReadLine ()
at TestProcess.Main () [0x00000] in <filename unknown>:0
私は何が間違っているのですか?