uselib -
загрузить
динамическую
библиотеку
#include <unistd.h>
[[deprecated]] int uselib(const char *library);
Системный
вызов
uselib()
выполняет
загрузку
динамической
библиотеки
для
использования
в
вызывающем
процессе.
Она
задаётся
именем
файла.
Адрес
загрузки
находится
в ней самой.
Библиотека
может быть
в любом
распознаваемом
формате.
On success, zero is returned. On error, -1 is returned, and
errno is set
to indicate the error.
В
дополнении
к тем кодам
ошибок,
которые
возвращаются
вызовами
open(2) и
mmap(2),
также
могут быть
следующие
коды
ошибок:
- EACCES
- На
библиотеку,
заданную
library, нет прав
на чтение
или
исполнение,
или
вызывающий
не имеет
прав на
поиск в
одном из
каталогов,
указанных
в пути.
(Смотрите
также path_resolution(7).)
- ENFILE
- Достигнуто
максимальное
количество
открытых
файлов в
системе.
- ENOEXEC
- Библиотека,
заданная
library, имеет
неизвестный
исполняемый
тип;
например, в
ней нет
корректных
идентификационных
чисел (magic numbers).
Вызов
uselib()
применяется
только в Linux и
поэтому не
должен
использоваться
в
программах,
предназначенных
для
переноса
на другие
платформы.
This obsolete system call is not supported by glibc. No declaration is provided
in glibc headers, but, through a quirk of history, glibc before glibc 2.23 did
export an ABI for this system call. Therefore, in order to employ this system
call, it was sufficient to manually declare the interface in your code;
alternatively, you could invoke the system call using
syscall(2).
In ancient libc versions (before glibc 2.0),
uselib() was used to load
the shared libraries with names found in an array of names in the binary.
Начиная с Linux 3.15
данный
системный
вызов
доступен
только,
если ядро
собрано с
параметром
CONFIG_USELIB.
ar(1),
gcc(1),
ld(1),
ldd(1),
mmap(2),
open(2),
dlopen(3),
capabilities(7),
ld.so(8)
Русский
перевод
этой
страницы
руководства
был сделан
Azamat Hackimov <
[email protected]>, Dmitriy Ovchinnikov
<
[email protected]>, Dmitry Bolkhovskikh <
[email protected]>,
Katrin Kutepova <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]