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