Мне любопытно, как printf
работает внутри Linux. Не понимаю, как он записывает данные в STDOUT
.
Немного поискав внутренности, я загрузил 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 работает с памятью компьютера и выводит символы на экран.
Если бы я был частью ассемблерного кода, что бы мне пришлось сделать, чтобы выполнить ту же задачу? Это зависит от операционной системы?