私は、c# を使用して豚のうなり声シェルでコマンドを実行することに取り組んでいます。次のコードを使用して、c# プログラムから grunt シェルを開始できます。
proc = new Process {StartInfo = new ProcessStartInfo
{
FileName = PIG_BIN + "\\pig.cmd",
UseShellExecute = false,
RedirectStandardError = true ,
RedirectStandardOutput = true,
RedirectStandardInput = true,
CreateNoWindow = true
}
};
次のメソッドとイベントを介して出力とエラーを読み取ります。
proc.OutputDataReceived += proc_OutputDataReceived;
proc.BeginOutputReadLine();
proc.ErrorDataReceived += proc_ErrorDataReceived;
proc.BeginErrorReadLine();
しかし、うなり声シェルから出力行を読み取ることができません。ただし、"grunt>" の前の行のみが単独で読み取られます。
次のコマンドを使用して引数を grunt シェルに渡します。
proc.StandardInput.WriteLine("dump a;");
引数をうなり声シェルにも渡すことができません。grunt シェルを開始すると、Java プロセスが開始されます。コマンドプロンプトでjava.exeを終了すると、「OutputDataReceived」イベントがヒットし、「grunt>」が取得されます。
grunt が Java プロセスとして実行されていることを願っています。したがって、grunt との間で引数をやり取りすることはできません。それを達成する方法はありますか??