1

.NET アプリケーションからのコンソール出力のキャプチャ (C#)

C#ではなくc++を使用していることを除いて、その質問で尋ねられているのと同様のことをしたいと思っています。私は、いくつかの C++ コードで書き直されようとしているいくつかの関数を含む、十分にテストされた小さな Java アプリケーションを持っています。結果が同じであることをテストするために、boost unit を使用してこのユニットテストを書きたいと思っています。基本的に、この Java コマンド ライン アプリケーションを C++ から呼び出したいと考えています。可能であればJNIを使​​用したくないので、C++コードを介して他のコマンドラインアプリケーションを実行することをお勧めします。

C++ アプリケーションからコンソール アプリケーションを呼び出し、コンソールで生成されたすべての出力をキャプチャするにはどうすればよいですか? (中間ファイルに書き込む必要はありませんが、それが唯一の方法である場合は、そうしてください)

これはやや簡単なようですが、キーワードは他のものに関する結果を見つける傾向があるため、Webを検索して何かを見つけるのに非常に苦労しています(c#とコマンドラインからのコンパイルは2つの例です)。この質問が重複していてもまったく驚かないでしょうが、同じ質問が見つかりません。既に存在する場合は、他の質問へのリンクが見つかったら、この質問を閉じてください。

4

1 に答える 1

2

標準 C++ ライブラリにはプロセス処理機能がないため、対象のオペレーティング システムによって異なります。たとえば Windows では、( CreatePipe関数を使用して) 2 つのパイプを作成し、Java アプリの入力と出力をリダイレクトしてから、CreateProcess関数を使用して Java アプリを実行します。ここにその例があります。

しかし、代わりに JNI を使用することを強くお勧めします。これは、パイプよりもはるかに優れた相互運用/IPC の形式です。パイプのルートに行けば、最終的にはそれに気付くでしょう。

于 2012-10-24T15:31:59.213 に答える