我正在使用c#在pig grunt shell上实现命令的执行。我可以使用以下代码通过c#程序启动grunt shell:
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 shell读取输出行。但是,只有“grunt>”之前的行是独自阅读。
我通过以下命令将参数传递给grunt shell,
proc.StandardInput.WriteLine("dump a;");
我也无法将参数传递给grunt shell。当我们启动grunt shell时启动java进程。如果我在命令提示符下结束java.exe,则会触发“OutputDataReceived”事件并且“grunt>”得到了。
我希望grunt作为一个java进程运行,因此我们无法传递和接收它的参数。有没有办法实现呢?