Heim Computer-Tutorials Computerwissen Prinzip von Console.WriteLine unter .NET9 Linux-x64

Prinzip von Console.WriteLine unter .NET9 Linux-x64

Feb 23, 2024 am 09:04 AM
writer console

.NET9 Linux-x64下Console.WriteLine原理

1. Vorwort

Ich habe bereits über die allgemeinen Prinzipien von Console.WriteLine im laufenden Prozess von Console.WriteLine unter Windows gesprochen. Wissen Sie? Dieser Artikel wirft einen Blick auf den neuesten .NET9-Laufprozess unter Linux-x64

2. Verwalteter Code

In .NET werden die beiden Klassen StreamReader und StreamWriter normalerweise für Stream-Lese- und Schreibvorgänge verwendet, und ihre Namespaces befinden sich in System.IO. Diese Klassen sind in der verwalteten Bibliothek System.Runtime.dll enthalten. Hier ist eine einfache Beispieloperation:

using (StreamWriter writer = File.CreateText("newfile.txt"))
{
await writer.WriteLineAsync("First line of example");
await writer.WriteLineAsync("and second line");
}
Nach dem Login kopieren

StreamWriter und StreamReader sind von TextWriter bzw. TextReader abgeleitet. Die von Console.WriteLine gedruckte Zeichenfolge ist der Datenstrom/Gerät, der direkt über TextWriter in die CLR-Bibliothek geschrieben wird.

Zum Beispiel:

static void Main(string[] args)
{
 Console.WriteLine("Call Main");
}
Nach dem Login kopieren

Console.WriteLine ruft die Funktion Out.EnsureInitialized auf. Out ist der Typ TextWriter. Der Code lautet wie folgt:

源码地址:https://github.com/dotnet/runtime/blob/main/src/libraries/System.Console/src/System/Console.cs

public static TextWriter Out
{
get
{
static TextWriter EnsureInitialized()
{
lock (s_syncObject)
{
if (s_out == null)
{
Volatile.Write(ref s_out, CreateOutputWriter(ConsolePal.OpenStandardOutput()));
}
return s_out;
}
}
}
}
Nach dem Login kopieren

Die Funktion „EnsureInitialized“ ruft die Funktion „Volatile.Write“ auf, um den Wert von Parameter zwei in das Feld „Parameter eins“ zu schreiben. Die Erklärung hier besteht darin, den von CreateOutputWriter(ConsolePal.OpenStandardOutput()) zurückgegebenen Wert in das Feld s_out zu schreiben. s_out ist ebenfalls ein TextWriter-Typ.

Hier ist der von CreateOutputWriter(ConsolePal.OpenStandardOutput()) zurückgegebene Wert. Die CreateOutputWriter-Funktion lautet wie folgt:

源码地址:https://github.com/dotnet/runtime/blob/main/src/libraries/System.Console/src/System/Console.cs


private static TextWriter CreateOutputWriter(Stream outputStream)
{
return outputStream == Stream.Null ?
TextWriter.Null :
TextWriter.Synchronized(new StreamWriter(
stream: outputStream,
encoding: OutputEncoding.RemovePreamble(), 
bufferSize: WriteBufferSize,
leaveOpen: true)
{
AutoFlush = true
});
}
Nach dem Login kopieren

Sie können sehen, dass CreateOutputWriter immer noch TextWriter zurückgibt, was bedeutet, dass Volatile.Write Stream-Daten in Stream-Daten schreibt und diese dann vom Gerät ausdruckt.

Was ist der hier geschriebene Stream-Datenwert? Schauen Sie sich weiterhin die Funktion ConsolePal.OpenStandardOutput() an, die einen Stream-Typ zurückgibt.

源码地址:
https://github.com/dotnet/runtime/blob/main/src/libraries/System.Console/src/System/ConsolePal.Unix.cs


public static Stream OpenStandardOutput()
{
return new UnixConsoleStream(Interop.CheckIo(Interop.Sys.Dup(Interop.Sys.FileDescriptors.STDOUT_FILENO)), FileAccess.Write);
}
Nach dem Login kopieren

Hier sind die Operationen unter Linux/Unix. Eine UnixConsoleStream-Klasse wird im Konstruktor von UnixConsoleStream instanziiert. Interop.Sys.Dup ist eine Funktion unter Linux, die Dateitabelleneintragsvorgänge ausführt. CheckIo ist eine Prüffunktion und kann hier ignoriert werden.

Im Allgemeinen erfolgt unter Linux beispielsweise das Drucken einer „Hallo Welt“ auf dem Terminal normalerweise über printf („Hallo Word“)

printf -> stdout(标准输出) -> Dup(STDOUT_FILENO) ->终端输出
Nach dem Login kopieren

Es ist ersichtlich, dass unter Linux der Parameter STDOUT_FILENO für Terminaloperationen über die Dup-Funktion übergeben wird. Der zweite Parameter von UnixConsoleStream ist FileAccess.Write, was das Schreiben einer Zeichenfolge bedeutet. Kapseln Sie dann diesen Stream und geben Sie ihn zurück, schreiben Sie ihn über Volatile.Write in den Terminal-Stream und drucken Sie ihn aus.

Dann ist es eigentlich ganz klar. Der Ablauf ist ungefähr wie folgt:

Console.WriteLine ->Out.EnsureInitialized -> ConsolePal.OpenStandardOutput() -> I
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonPrinzip von Console.WriteLine unter .NET9 Linux-x64. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Vorbestellungen für die neue Nintendo Switch Lite-Aktualisierung sind möglich Vorbestellungen für die neue Nintendo Switch Lite-Aktualisierung sind möglich Jun 29, 2024 am 06:49 AM

Nintendo hat Vorbestellungen für die neueste Version der Switch Lite (aktuell 189,99 $ bei Amazon) eröffnet. Allerdings ist das Gerät derzeit noch nicht weltweit bestellbar. Um es noch einmal zusammenzufassen: Das Unternehmen hat vor knapp zwei Wochen die Switch Lite Hyrule Edition vorgestellt

Was bedeutet Konsole? Was bedeutet Konsole? Sep 05, 2023 pm 02:43 PM

Konsole bedeutet Konsole. Es handelt sich um ein Gerät oder eine Software, die mit einem Computersystem interagiert. Es handelt sich normalerweise um ein Gerät mit einer Tastatur und einem Bildschirm zur Eingabe und Ausgabe von Informationen. Die Konsole wurde ursprünglich für große Computersysteme verwendet und später auch für persönliche Zwecke verwendet Computern und Servern kann es Benutzern helfen, Computersysteme zu verwalten und zu warten sowie Betriebssysteme und Anwendungen zu installieren, Programme zu debuggen usw.

Konsolenausgabe mit der Console.Clear-Funktion in C# löschen Konsolenausgabe mit der Console.Clear-Funktion in C# löschen Nov 18, 2023 am 11:00 AM

Verwenden Sie die Console.Clear-Funktion in C#, um die Konsolenausgabe zu löschen. In C#-Konsolenanwendungen müssen wir häufig die Ausgabeinformationen in der Konsole löschen, um neue Inhalte anzuzeigen oder eine bessere Benutzererfahrung zu bieten. C# bietet die Funktion Console.Clear zur Implementierung dieser Funktion, die die Ausgabe in der Konsole löschen und die Schnittstelle wieder leer machen kann. Das Aufrufformat der Console.Clear-Funktion lautet wie folgt: Console.Clear(); Diese Funktion erfordert keine Eingabe

Nintendo kündigt vor der Veröffentlichung von Switch 2 eine neue Aktualisierung von Switch Lite an Nintendo kündigt vor der Veröffentlichung von Switch 2 eine neue Aktualisierung von Switch Lite an Jun 20, 2024 am 09:41 AM

Nintendo hat gestern während seines letzten Nintendo Direct-Events zahlreiche Spiele vorgestellt, eine Übersicht darüber haben wir separat bereitgestellt. Darüber hinaus kündigte das Unternehmen möglicherweise auch eine neue Version der Switch Lite (aktuell 194,93 $ bei Amazon) an

Was bedeutet Konsole? Was bedeutet Konsole? Aug 09, 2023 pm 04:21 PM

Eine Konsole ist eine Konsole, eine interaktive Schnittstelle, die in Computerprogrammen zur Eingabe und Ausgabe von Texten oder Befehlen verwendet wird. In verschiedenen Betriebssystemen und Entwicklungsumgebungen kann die Konsole unterschiedlich aussehen und Funktionen haben. In der Regel handelt es sich um eine Textschnittstelle, die eine Befehlszeilenschnittstelle oder Befehlszeilenaufforderung bereitstellt und es dem Benutzer ermöglicht, Befehle über die Tastatur einzugeben und die Ausgabe des Programms anzuzeigen.

MagicX MagicX Sep 01, 2024 am 06:30 AM

Wenn Sie kürzlich den MagicX XU Mini M gekauft haben, könnte diese Nachricht eine Überraschung sein. Ein Hardware- und Software-Teardown der neu veröffentlichten Handheld-Konsole ergab, dass es sich bei der beworbenen RK3562-CPU tatsächlich um einen älteren RK3326-Prozessor mit geringerer Spezifikation handelt.

Was ist die Konsolenschnittstelle? Was ist die Konsolenschnittstelle? Aug 08, 2023 am 11:15 AM

Die Konsolenschnittstelle ist ein Tool zum Ausgeben von Informationen in der Befehlszeile des Computers oder in Browser-Entwicklungstools. Sie bietet eine einfache Möglichkeit, die Ausgabeergebnisse und Debugging-Informationen der Anwendung aufzuzeichnen und anzuzeigen. Mithilfe der Konsolenschnittstelle können Entwickler Probleme effektiver identifizieren und lösen, die Anwendungsleistung optimieren und die Entwicklungseffizienz verbessern. Ob in der Befehlszeile oder im Browser-Entwicklungstool, die Konsolenschnittstelle ist ein unverzichtbares Werkzeug.

So verwenden Sie Console.WriteLine() in C# So verwenden Sie Console.WriteLine() in C# Feb 25, 2024 pm 02:36 PM

Für die Verwendung von Console.WriteLine() in C# sind bestimmte Codebeispiele erforderlich. Console.WriteLine() in C# ist eine sehr häufige Methode zur Ausgabe einer Textzeile an die Konsole. Seine Funktion ähnelt der Funktion print() oder println() in anderen Programmiersprachen. Die Verwendung von Console.WriteLine() ist sehr einfach. Sie müssen lediglich den auszugebenden Text in die Klammern schreiben und die Eingabetaste drücken. Im Folgenden sind einige spezifische aufgeführt

See all articles