Rumah tutorial komputer pengetahuan komputer Prinsip Console.WriteLine di bawah .NET9 Linux-x64

Prinsip Console.WriteLine di bawah .NET9 Linux-x64

Feb 23, 2024 am 09:04 AM
writer console

.NET9 Linux-x64下Console.WriteLine原理

1 Saya telah bercakap sebelum ini tentang prinsip biasa Console.WriteLine dalam proses menjalankan Console.WriteLine di bawah Windows Adakah anda tahu? Artikel ini melihat proses berjalan .NET9 terbaharunya di bawah Linux-x64

2. Kod terurus

Dalam .NET, dua kelas StreamReader dan StreamWriter biasanya digunakan untuk operasi membaca dan menulis strim, dan ruang nama mereka terletak di System.IO. Kelas ini disertakan dalam perpustakaan terurus System.Runtime.dll. Berikut ialah contoh operasi mudah:
using (StreamWriter writer = File.CreateText("newfile.txt"))
{
await writer.WriteLineAsync("First line of example");
await writer.WriteLineAsync("and second line");
}
Salin selepas log masuk
StreamWriter dan StreamReader masing-masing berasal daripada TextWriter dan TextReader. Rentetan yang dicetak oleh Console.WriteLine ialah aliran data/peranti yang ditulis terus melalui TextWriter dalam pustaka CLR.

Contohnya:

static void Main(string[] args)
{
 Console.WriteLine("Call Main");
}
Salin selepas log masuk

Console.WriteLine akan memanggil fungsi Out.EnsureInitialized Out ialah jenis TextWriter:

源码地址: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;
}
}
}
}
Salin selepas log masuk

Fungsi EnsureInitialized memanggil fungsi Volatile.Write The Volatile.Write function bermaksud untuk menulis nilai parameter dua ke dalam medan parameter satu. Penjelasan di sini adalah untuk menulis nilai yang dikembalikan oleh CreateOutputWriter(ConsolePal.OpenStandardOutput()) ke dalam medan s_out s_out juga merupakan jenis TextWriter.

Berikut ialah nilai yang dikembalikan oleh CreateOutputWriter(ConsolePal.OpenStandardOutput()). Fungsi CreateOutputWriter adalah seperti berikut:

源码地址: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
});
}
Salin selepas log masuk

Anda dapat melihat bahawa CreateOutputWriter masih mengembalikan TextWriter, yang bermaksud Volatile.Write menulis data strim untuk menstrim data dan kemudian mencetaknya daripada peranti.

Apakah nilai data aliran yang ditulis di sini? Teruskan melihat fungsi ConsolePal.OpenStandardOutput(), yang mengembalikan jenis Strim.

源码地址:
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);
}
Salin selepas log masuk

Berikut ialah operasi di bawah Linux/Unix Kelas UnixConsoleStream digunakan dalam OpenStandardOutput Dalam pembina UnixConsoleStream, parameter pertama ialah Interop.CheckIo(Interop.Sys.Dup(Interop.Sys.FileDescriptors.STD)). Interop.Sys.Dup ialah fungsi di bawah Linux yang melaksanakan operasi kemasukan jadual fail. CheckIo ialah fungsi semak dan boleh diabaikan di sini.

Sebagai contoh, secara amnya, di bawah Linux, mencetak hello World pada terminal biasanya dilakukan melalui printf ("hello Word")

printf -> stdout(标准输出) -> Dup(STDOUT_FILENO) ->终端输出
Salin selepas log masuk

Ia boleh dilihat bahawa di bawah Linux, parameter STDOUT_FILENO dihantar melalui fungsi Dup untuk operasi terminal Parameter kedua UnixConsoleStream ialah FileAccess.Write, yang bermaksud menulis rentetan. Kemudian bungkus Strim ini dan kembalikan, tuliskannya ke aliran terminal melalui Volatile.Tulis dan cetaknya.

Maka ia sebenarnya sangat jelas Prosesnya secara kasar seperti berikut:

Console.WriteLine ->Out.EnsureInitialized -> ConsolePal.OpenStandardOutput() -> I
Salin selepas log masuk

Atas ialah kandungan terperinci Prinsip Console.WriteLine di bawah .NET9 Linux-x64. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Prapesanan dibuka untuk muat semula Nintendo Switch Lite baharu Prapesanan dibuka untuk muat semula Nintendo Switch Lite baharu Jun 29, 2024 am 06:49 AM

Nintendo telah membuka prapesanan untuk versi terkini Switch Lite (kurr. $189.99 di Amazon). Walau bagaimanapun, peranti itu belum lagi tersedia untuk dipesan secara global. Untuk mengimbas kembali, syarikat itu membentangkan Edisi Switch Lite Hyrule hampir dua minggu lalu d

Apakah maksud konsol? Apakah maksud konsol? Sep 05, 2023 pm 02:43 PM

Konsol bermaksud konsol Ia adalah peranti atau perisian yang berinteraksi dengan sistem komputer Ia biasanya merupakan peranti dengan papan kekunci dan skrin untuk memasukkan dan mengeluarkan maklumat pada asalnya komputer dan pelayan, ia boleh membantu pengguna mengurus dan menyelenggara sistem komputer, serta memasang sistem pengendalian dan aplikasi, program nyahpepijat, dsb.

Kosongkan output konsol menggunakan fungsi Console.Clear dalam C# Kosongkan output konsol menggunakan fungsi Console.Clear dalam C# Nov 18, 2023 am 11:00 AM

Gunakan fungsi Console.Clear dalam C# untuk mengosongkan output konsol Dalam aplikasi konsol C#, kami selalunya perlu mengosongkan maklumat output dalam konsol untuk memaparkan kandungan baharu atau memberikan pengalaman pengguna yang lebih baik. C# menyediakan fungsi Console.Clear untuk melaksanakan fungsi ini, yang boleh mengosongkan output dalam konsol dan menjadikan antara muka kosong semula. Format panggilan bagi fungsi Console.Clear adalah seperti berikut: Console.Clear();

Nintendo mengumumkan penyegaran Switch Lite baharu sebelum keluaran Switch 2 Nintendo mengumumkan penyegaran Switch Lite baharu sebelum keluaran Switch 2 Jun 20, 2024 am 09:41 AM

Nintendo mempersembahkan banyak permainan semalam semasa acara Nintendo Direct terbarunya, gambaran keseluruhan yang telah kami sediakan secara berasingan. Selain itu, syarikat itu juga mengumumkan versi baharu Switch Lite (kurr. $194.93 di Amazon), mungkin

MagicX XU Mini M: Teardown mendedahkan CPU RK3326 dan bukannya RK3562 yang diiklankan, MagicX memutuskan hubungan dengan pembangun pihak ketiga MagicX XU Mini M: Teardown mendedahkan CPU RK3326 dan bukannya RK3562 yang diiklankan, MagicX memutuskan hubungan dengan pembangun pihak ketiga Sep 01, 2024 am 06:30 AM

Jika anda membeli MagicX XU Mini M baru-baru ini, berita ini mungkin mengejutkan. Pembongkaran perkakasan dan perisian konsol pegang tangan yang baru dikeluarkan mendedahkan bahawa CPU RK3562 yang diiklankan, sebenarnya, pemproses RK3326 yang lebih rendah dan lebih lama.

apakah maksud konsol apakah maksud konsol Aug 09, 2023 pm 04:21 PM

Konsol ialah konsol, antara muka interaktif yang digunakan dalam program komputer untuk memasukkan dan mengeluarkan teks atau arahan Dalam sistem pengendalian dan persekitaran pembangunan yang berbeza, konsol mungkin mempunyai penampilan dan fungsi yang berbeza. Biasanya antara muka teks yang menyediakan antara muka baris arahan atau gesaan baris arahan, membolehkan pengguna memasukkan arahan melalui papan kekunci dan memaparkan output program.

Nintendo Switch 2 dikhabarkan akan mendapatkan port Assassin's Creed Shadows dan entri sebelumnya dalam siri ini Nintendo Switch 2 dikhabarkan akan mendapatkan port Assassin's Creed Shadows dan entri sebelumnya dalam siri ini Aug 14, 2024 pm 12:36 PM

Minggu lepas, Paul Gele, orang dalam permainan yang terkenal, berkongsi bahawa Nintendo Switch 2 yang akan datang akan mendapat port AAA pihak ketiga utama semasa pelancaran. Ini adalah sesuatu yang dinanti-nantikan kerana pegang tangan permainan generasi pertama tidak mendapat sebarang tajuk AAA semasa pelancaran. B

Apakah antara muka konsol? Apakah antara muka konsol? Aug 08, 2023 am 11:15 AM

Antara muka konsol ialah alat untuk mengeluarkan maklumat dalam baris arahan komputer atau alat pembangunan penyemak imbas Ia menyediakan cara mudah untuk merekod dan melihat hasil output dan maklumat penyahpepijatan aplikasi. Dengan menggunakan antara muka konsol, pembangun boleh mengenal pasti dan menyelesaikan masalah dengan lebih berkesan, mengoptimumkan prestasi aplikasi dan meningkatkan kecekapan pembangunan. Sama ada dalam baris arahan atau alat pembangunan penyemak imbas, antara muka konsol adalah alat yang sangat diperlukan.

See all articles