LINUX.ORG.RU

Вопрос по системным вызовам и glibc?

 , ,


0

1

Если я правильно понимаю в .h файлах есть только прототипы функций осуществляющих системные вызовы, а реализация самих функций находится в glibc и по умолчанию линкуется динамически к моей программе, при системном вызове моя программа вызывает функцию из glibc, которая в свою очередь по интерапту вызывает код ядра.

Если я сделаю #define _FILE_OFFSET_BITS 64 то в заголовочных файлах прототип некоторых функций станет другим(если у меня 32 битная ОС) при этом на саму glibc это повлиять не как не может. Правильно ли я понимаю, что в glibc на самом деле несколько реализаций одних и тех же функций для разных типов аргументов и называются соответственно тоже по разному(типа как mangling в c++)? Т.е. функции которые я вызываю на самом деле не протатипы функций из glibc, а обертки которые в зависимости от дефайнов вызывают разные функции в glibc?

Мог бы и сам найти:

/usr/include/stdlib.h

# ifndef __USE_FILE_OFFSET64
extern int mkstemp (char *__template) __nonnull ((1)) __wur;
# else
#  ifdef __REDIRECT
extern int __REDIRECT (mkstemp, (char *__template), mkstemp64)
     __nonnull ((1)) __wur;
#  else
#   define mkstemp mkstemp64
#  endif
# endif
, например.

deadNightTiger ★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.