Maison >développement back-end >C++ >Comment puis-je capturer efficacement la sortie standard d'un processus enfant dans .NET ?

Comment puis-je capturer efficacement la sortie standard d'un processus enfant dans .NET ?

DDD
DDDoriginal
2025-01-25 03:36:08615parcourir

How Can I Efficiently Capture Standard Output from a Child Process in .NET?

Capturer efficacement la sortie standard du processus enfant dans .NET

Récupérer la sortie standard (STDOUT) d'un processus enfant dans .NET peut être délicat. Cet article détaille une solution basée sur l'expérience d'un développeur.

Le développeur a initialement utilisé des rappels basés sur des événements pour capturer le résultat d'une application console lancée en tant que processus enfant. Cette approche a cependant conduit à une impasse, empêchant le OutputDataReceived événement de se déclencher.

La solution impliquait de passer à une lecture directe depuis le StandardOutput flux du processus :

<code class="language-csharp">return p.StandardOutput.ReadToEnd();</code>

Cette méthode capture efficacement tous les résultats du processus.

Alternativement, la méthode BeginOutputReadLine() propose une approche événementielle :

<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>

Ces techniques fournissent des méthodes fiables pour capturer STDOUT à partir des applications console, améliorant ainsi l'interaction et la surveillance des processus enfants.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn