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() は常に空ですか?
私は何か間違ったことをしているとは思いません。その実行可能ファイルには何か変なものがあると思います。この実行可能ファイルを使用するには、http: //supp.iar.com/Download/SW/?item =EWARM-EVALまたはhttp://www.iar.com/en/Products/IAR-Embedded-からダウンロードできます。ワークベンチ/ARM/ . 次にC:\Program Files (x86)\IAR Systems\Embedded Workbench 6.4 Evaluation\arm\bin
、jlink.exe に移動して実行します (USB 経由で接続されたボードがない場合、エラーが発生しますが、問題ではありません。エラー メッセージも表示されません)。