Книга: Разработка приложений в среде Linux. Второе издание
27.1.1. Пример
27.1.1. Пример
В главе 8 был представлен пример использования обычной разделяемой библиотеки. Библиотеку libhello.so
, которую нам удалось создать, можно загружать во время выполнения. Программа loadhello
загружает libhello.so
динамически и вызывает функцию print_hello
, которая находится в библиотеке.
Ниже показан код loadhello.с
.
1: /* loadhello.с */
2:
3: #include <dlfcn.h>
4: #include <stdio.h>
5: #include <stdlib.h >
6:
7: typedef void (*hello_function) (void);
8:
9: int main(void) {
10: void * library;
11: hello_function hello;
12: const char * error;
13:
14: library = dlopen("libhello.so", RTLD_LAZY);
15: if (library == NULL) {
16: fprintf (stderr, "He удается открыть libhello.so: %sn",
17: dlerror());
18: exit(1);
19: }
20:
21: /* Хотя в данном случае мы знаем, что символ print_hello никогда
22: * не должен быть равен NULL, при поиске произвольных символов
23: * все происходит иначе. Поэтому вместо проверки результата функции dlsym()
24: * мы показываем пример проверки кода, возвращаемого функцией dlerror().
25: */
26: dlerror();
27: hello = dlsym(library, "print_hello");
28: error = dlerror();
29: if (error) {
30: fprintf(stderr, "He удается найти print_hello: %sn", error);
31: exit(1);
32: }
33:
34: (*hello)();
35: dlclose(library);
36: return 0;
37: }
- Пример установочного скрипта
- Пример из практики
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- Примеры получения статистики
- Пример применения метода «пять почему»
- Пример 12-8. Частота встречаемости отдельных слов
- 1.2.5. Пример программы
- Пример 17-10. Блочный комментарий
- Примеры
- 2. Пример создания базового отношения в записи на псевдокоде
- Пример 9-8. Содержимое $* и $@, когда переменная $IFS -- пуста
- Часть I На примере денег