ホームページ >バックエンド開発 >C++ >.NET で子プロセスから STDOUT をキャプチャするにはどうすればよいですか?

.NET で子プロセスから STDOUT をキャプチャするにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2025-01-25 03:46:16508ブラウズ

How to Capture STDOUT from a Child Process in .NET?

.NET でサブプロセスを開始し、標準出力をキャプチャします

.NET は、サブプロセスを作成し、その標準出力をリダイレクトして出力をキャプチャする方法を提供します。 Process クラスは、プロセスを生成および操作するためのメソッドを提供します。

元のコードとその制限事項

提供されたコードはこの問題を解決しようとしますが、いくつかの問題が発生します。 WaitForExit() メソッドがスレッドをブロックするため、OutputDataReceived イベント ハンドラーは呼び出されません。

改善方法

改善されたコードは実用的なソリューションを提供します:

<code class="language-csharp">process.StartInfo.UseShellExecute = false;
process.StartInfo.RedirectStandardOutput = true;
process.OutputDataReceived += (sender, args) => Console.WriteLine("received output: {0}", args.Data);
process.Start();
process.BeginOutputReadLine();</code>

このコードは、BeginOutputReadLine() メソッドを使用して、子プロセスからの出力データのリスニングを開始します。 OutputDataReceived イベント ハンドラーが正しく呼び出され、キャプチャされた出力にイベント ハンドラー内でアクセスできるようになりました。

以上が.NET で子プロセスから STDOUT をキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。