Windows Azure Cloud Storage ermöglicht es Ihnen bereits ab 0,10€ pro GB/Monat die Vorteile der Cloud zu nutzen.
Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1551 | Anzahl registrierter User: 1841 | Besucher online: 74
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Standardein- und ausgabe eines Prozesses umleiten


Autor: Christoph Hausner
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 3303
  
Kick it on dotnet-kicks.de  

Beschreibung:

Möchte man die Ausgabe eines (meist Konsolen-) Programms auslesen sobald es sich beendet hat, so muss der StandardOutput oder kurz StdOut des Prozesses umgeleitet werden. Die ReadProcessOutput-Methode erhält Dateiname und Argumente des aufzurufenden Programmes und liefert den StdOut als String nach Beendigung zurück.
Neben dem StandardOutput gibt es außerdem noch den StandardInput- (StdIn) und den StandardError-Stream (StdErr). Über den StdIn kann man dem laufenden Konsolenprozess Daten mitteilen, die normalerweise über die Tastatur eingegeben werden. Dies erlaubt die zweite Überladung der ReadProcessOutput-Methode. Die Verwendung des StdErr, in den Fehlermeldungen geschrieben werden, erfolgt analog zum StdOut, weswegen das Auslesen dessen nicht im Codebeispiel enthalten ist.

Möchte man bereits während der Prozess noch läuft auf den StdOut oder StdErr zugreifen, so ist dies ebenfalls möglich. Dazu den ReadToEnd-Aufruf ersetzen und stattdessen direkt mit der bereitgestellten StreamReader-Klasse arbeiten.

Prinzipiell besitzt jedes Programm die drei Standard-Streams, jedoch wird meist nur bei Konsolenprogrammen StdIn und StdOut (und in seltenen Fällen StdErr) verwendet.


Abgelegt unter: StandardInput, StandardOutput, StandardError, StdIn, StdOut, StdErr, Ausgabe, Konsolenausgabe.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
using System.Diagnostics;

static string ReadProcessOutput(string fileName, string arguments)
{
    Process process = new Process();

    process.StartInfo.FileName = fileName;
    process.StartInfo.Arguments = arguments;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardOutput = true;

    process.Start();

    string stdOut = process.StandardOutput.ReadToEnd();

    process.Close();

    return stdOut;
}

static string ReadProcessOutput(string fileName, string arguments, string stdIn)
{
    Process process = new Process();

    process.StartInfo.FileName = fileName;
    process.StartInfo.Arguments = arguments;
    process.StartInfo.UseShellExecute = false;
    process.StartInfo.RedirectStandardInput = true;
    process.StartInfo.RedirectStandardOutput = true;

    process.Start();

    process.StandardInput.Write(stdIn);
    process.StandardInput.Close();

    string stdOut = process.StandardOutput.ReadToEnd();

    process.Close();

    return stdOut;
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



Diese Snippets könnten für Sie interessant sein:
Keine Snippets verfügbar.

schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.