我想在我的控制台应用程序中使用一个名为jlink.exe的可执行文件。因为jlink.exe不是.net应用程序,所以我无法引用它并调用它的方法。 因此我想用它来阅读它的输出
当我从Windows资源管理器启动该exe时,它的外观如下:
然后等待命令。如果我输入mem 88 2
,我就会回来:
现在我想对我的.net控制台应用程序执行相同的操作,读取它的标准输出但由于某种原因我无法读取输出。这就是我所拥有的:
// change working directory
Directory.SetCurrentDirectory(@"C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.4 Evaluation\arm\bin");
Process p = new Process( )
{
StartInfo = new ProcessStartInfo( @"jlink.exe" )
{
UseShellExecute = false ,
RedirectStandardOutput = true ,
RedirectStandardInput = true
}
};
p.Start( );
StreamWriter standardInput = p.StandardInput;
StreamReader standardOutput = p.StandardOutput;
var line = string.Empty;
while ( ( line = standardOutput.ReadLine( ) ) != null )
{
Console.WriteLine( line );
}
为什么当我运行该代码时,我只得到一个黑色窗口...我没有得到与运行该可执行文件时相同的输出。当我对其他可执行文件运行该代码时,它工作得很好。
如果我然后输入mem 88 2
并按ENTER键则没有任何反应。如果我再按一次输入,那么我终于得到了我想要的额外内容。为什么我使用该可执行文件获得此行为?
我看过类似的问题,例如:
process.standardoutput.ReadToEnd() always empty?
我认为我做错了什么。我想这个可执行文件有些奇怪。要使用该可执行文件,您可以在http://supp.iar.com/Download/SW/?item=EWARM-EVAL或http://www.iar.com/en/Products/IAR-Embedded-Workbench/ARM/下载该文件。然后转到C:\Program Files (x86)\IAR Systems\Embedded Workbench 6.4 Evaluation\arm\bin
并执行jlink.exe(如果没有通过USB连接板,则会出现错误但无关紧要。错误消息也不会显示)。