Logo Море(!) аналитической информации!
IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware
VPS/VDS серверы. 30 локаций на выбор

Серверы VPS/VDS с большим диском

Хорошие условия для реселлеров

4VPS.SU - VPS в 17-ти странах

2Gbit/s безлимит

Современное железо!

Бесплатный конструктор сайтов и Landing Page

Хостинг с DDoS защитой от 2.5$ + Бесплатный SSL и Домен

SSD VPS в Нидерландах под различные задачи от 2.6$

✅ Дешевый VPS-хостинг на AMD EPYC: 1vCore, 3GB DDR4, 15GB NVMe всего за €3,50!

🔥 Anti-DDoS защита 12 Тбит/с!

LDFCN(4)

НАЗВАНИЕ
ldfcn - программы доступа к об ектным файлам обычного формата

СИНТАКСИС


#include <stdio.h>

#include <filehdr.h>

#include <ldfcn.h>

ОПИСАНИЕ
Программы доступа к об ектным файлам обычного формата это совокупность функций, обеспечивающих чтение об ектных файлов и архивов, содержащих объектные файлы. Хотя вызывающая программа должна "знать" детали структуры обрабатываемых ею частей об ектного файла, использование программ доступа исключает необходимость знания структуры файла в целом.

Интерфейс между вызывающей программой и программами доступа основан на определяемом типе LDFILE. Тип определен во включаемом файле <ldfcn.h> как структура struct ldfile. Основное назначение этой структуры - обеспечить унифицированный доступ как к отдельным об ектным файлам, так и к архивам объектных файлов.

Функция ldopen(3X) размещает и инициализирует структуру LDFILE, возвращая в вызывающую программу указатель на структуру. Доступ к полям структуры LDFILE обеспечивается макросами, определенными в <ldfcn.h>:

LDFILE *ldptr;
TYPE (ldptr)
Магическое число, служащее для различения элементов архива и отдельных объектных файлов.
IOPTR (ldptr)
Указатель на файл, возвращаемый функцией fopen, и используемый стандартными функциями ввода/вывода.
OFFSET (ldptr)
Файловый адрес начала объектного файла; не 0, если файл является элементом архива.
HEADER (ldptr)
Структура заголовка объектного файла.

Функции доступа подразделяются на 4 группы:

  1. Открытие и закрытие объектного файла:
    ldopen(3X) и ldaopen [см. ldopen(3X)]
    (открытие объектного файла);
    ldclose(3X) и ldaclose [см. ldclose(3X)]
    (закрытие объектного файла).
  2. Чтение заголовков, данных из таблицы имен и информации о номерах строк:
    ldahread(3X)
    (чтение архивного заголовка элемента архивного файла);
    ldfhread(3X)
    (чтение заголовка объектного файла);
    ldshread(3X) и ldnshread [см. ldshread(3X)]
    (чтение заголовка секции объектного файла);
    ldtbread(3X)
    (чтение элемента таблицы имен объктного файла);
    ldgetname(3X)
    (получение символического имени из элемента таблицы имен или из таблицы цепочек);
    ldlread(3X), ldlinit, ldlitem [см. ldlread(3X)]
    (работа с таблицей номеров строк).
  3. Поиск начала секции, информации о настройке ссылок или таблицы номеров строк, относящихся к определенной секции:
    ldohseek(3X)
    (поиск необязательного заголовка объектного файла);
    ldsseek(3X) и ldnsseek [см. ldsseek(3X)]
    (поиск секции объектного файла);
    ldrseek(3X) и ldnrseek [см. ldrseek(3X)]
    (поиск информации о настройке ссылок);
    ldlseek(3X) и ldnlseek [см. ldlseek(3X)]
    (поиск таблицы номеров строк);
    ldtbseek(3X)
    (поиск таблицы имен объектного файла).
  4. Получение индекса элемента таблицы имен об ектного файла:
    ldtbindex(3X)

Эти функции детально описаны в соответствующих разделах Справочника.

После успешного поиска (функциями третьей группы) текущая позиция в файле устанавливается на начало найденной информации.

Все функции, кроме ldopen(3X), ldgetname(3X) и ldtbindex(3X), возвращают значения SUCCESS или FAILURE (эти константы определены во включаемом файле <ldfcn.h>). Ldopen(3Х) и ldaopen [см. ldopen(3Х)] возвращают указатель на структуру LDFILE.

Дополнительные средства доступа к объектному файлу обеспечиваются набором макросов, определенных в файле <ldfcn.h>. Эти макросы являются прямыми аналогами стандартных функций ввода/вывода, осуществляющим чтение и обработку файлов. Макросы используют поле дескриптора файла из структуры LDFILE.

Предоставляются следующие макросы:


     GETC (ldptr)

     FGETC (ldptr)

     GETW (ldptr)

     UNGETC (c, ldptr)

     FGETS (ldptr)

     FREAD ((char *) ptr, sizeof (*ptr), nitems, ldptr)

     FSEEK (ldptr, offset, ptrname)

     FTELL (ldptr)

     REWIND (ldptr)

     FEOF (ldptr)

     FERROR (ldptr)

     FILENO (ldptr)

     SETBUF (ldptr, buf)

     STROFFSET (ldptr)

Макрос STROFFSET вычисляет адрес таблицы цепочек. Относительно других макросов следует обратиться к описаниям соответствующих стандартных функций ввода/вывода.

При редактировании связей вызывающей программы следует подключить библиотеку программ доступа к объектным файлам libld.a.

СМ. ТАКЖЕ
fseek(3S), ldahread(3X), ldclose(3X), ldgetname(3X), ldfhread(3X), ldlread(3X), ldlseek(3X), ldohseek(3X), ldopen(3X), ldrseek(3X), ldsseek(3X), ldshread(3X), ldtbindex(3X), ldtbread(3X), ldtbseek(3X), stdio(3S), intro(5).

ПРЕДОСТЕРЕЖЕНИЯ
Макрос FSEEK, определенный в файле <ldfcn.h>, обращается к стандартной функции ввода/вывода fseek(3S). Нельзя использовать FSEEK для позиционирования относительно конца архивного файла, поскольку конец архивного файла не обязательно совпадает с концом одного из содержащихся в архиве объектных файлов.

VPS в России, Европе и США

Бесплатная поддержка и администрирование

Оплата российскими и международными картами

🔥 VPS до 5.7 ГГц под любые задачи с AntiDDoS в 7 локациях

💸 Гифткод CITFORUM (250р на баланс) и попробуйте уже сейчас!

🛒 Скидка 15% на первый платеж (в течение 24ч)

Скидка до 20% на услуги дата-центра. Аренда серверной стойки. Colocation от 1U!

Миграция в облако #SotelCloud. Виртуальный сервер в облаке. Выбрать конфигурацию на сайте!

Виртуальная АТС для вашего бизнеса. Приветственные бонусы для новых клиентов!

Виртуальные VPS серверы в РФ и ЕС

Dedicated серверы в РФ и ЕС

По промокоду CITFORUM скидка 30% на заказ VPS\VDS

Новости мира IT:

Архив новостей

IT-консалтинг Software Engineering Программирование СУБД Безопасность Internet Сети Операционные системы Hardware

Информация для рекламодателей PR-акции, размещение рекламы — adv@citforum.ru,
тел. +7 495 7861149
Пресс-релизы — pr@citforum.ru
Обратная связь
Информация для авторов
Rambler's Top100 TopList This Web server launched on February 24, 1997
Copyright © 1997-2000 CIT, © 2001-2019 CIT Forum
Внимание! Любой из материалов, опубликованных на этом сервере, не может быть воспроизведен в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения владельцев авторских прав. Подробнее...