Почему стандартный вывод в libc? - PullRequest
0 голосов
/ 08 мая 2018

Вопрос

Почему переменная stdout в двоичном файле связана с адресом libc?

А что по этому конкретному адресу libc?

1 Ответ

0 голосов
/ 10 мая 2018

Объект FILE, на который указывает FILE *stdout, может быть выделен во время выполнения функциями инициализации libc, для реализаций libc, таких как glibc, которые требуют вызова функций инициализации до запуска main.

Так что не должно быть глобально в libc, потому что тогда оба будут иметь один и тот же стандартный вывод

Каждый процесс имеет свой собственный указатель stdout, указывающий на собственный объект FILE, , поскольку раздел данных общих библиотек является частным отображением.

Различные процессы, использующие одну и ту же библиотеку, не имеют общей памяти для чтения-записи данных.

...