printf
がLinux内でどのように動作するのか不思議です。私はそれがSTDOUT
にデータを書き込む方法を理解していません。printfは内部でどのように動作しますか?
は、内部の検索のビットの後、私はglibc
をダウンロードし、ソースコードを見ていた:
__printf (const char *format, ...)
{
va_list arg;
int done;
va_start (arg, format);
done = vfprintf (stdout, format, arg);
va_end (arg);
return done;
}
これを見つけた後、私はvfprintf
機能に深く入った - しかし、ファイルは約2500でありますよく知られていないCコードの行。私は10,000フィートの説明から、printfがコンピュータのメモリとどのように動作し、画面に文字を表示するかを探しています。
私がアセンブリコードであった場合、同じタスクを達成するためには何が必要でしょうか?それはオペレーティングシステムに依存していますか?
これはすべて、デバイスに書き込むことから始まります(ほぼファイルのように)。デバイスドライバが引き継いでASCII値を解釈し、その値を表示する方法を指示します。ディスク、マウスなどと同じです。 – Jiminion
いいえ、彼はあまりにも基本的な書き込みだけでなく、vfprintfを理解したいと思います。しかし、もう一方のスレッドには残りの部分が含まれています。 –