我遇到了类似已解决的问题here。但我无法弄清楚,问题是如何解决的。我有一个程序,可以定义一个输入和输出文件。从Commend行运行,一切正常:
D:\Tools\siftDemoV4>siftWin32.exe -display < D:\tmp\SrcPgm\image000.pbm > result.pbm
但是通过System.Diagnostics.Process运行不起作用。我收到错误“无效的命令行参数:&lt;”然后发生System.InvalidOperationException。
var process = new Process()
{
StartInfo =
{
Arguments = string.Format(@"-display < {0} > {1}", configuration.Source,
configuration.Destination),
FileName = configuration.PathToExternalSift,
RedirectStandardError = true,
RedirectStandardInput = true,
RedirectStandardOutput = true,
UseShellExecute = false,
CreateNoWindow = true,
ErrorDialog = false,
}
};
process.EnableRaisingEvents = true;
process.Exited += OnProcessExited;
process.OutputDataReceived += new DataReceivedEventHandler(process_OutputDataReceived);
process.ErrorDataReceived += new DataReceivedEventHandler(process_ErrorDataReceived);
process.Start();
process.BeginOutputReadLine();
process.BeginErrorReadLine();
在调用process.Start()之后,我已经尝试写入process.StandardInput,但是在使用调试器时,外部程序有时已经完成(HasExited == true)。
任何人都可以解释我如何通过这个特殊的“&lt;” “&gt;” 中程序的参数?
最好的问候!
顺便说一句,我多次检查路径,它们是正确的。
答案 0 :(得分:2)
您需要的唯一参数是-display
其他参数不是程序的参数,您应该使用RedirectStandardInput
和RedirectStandardOutput
E.g
D:\tmp\SrcPgm\image000.pbm
StandardInput
StandardOutput
读取result.pbm