|
CS471/571 - Operating Systems
|
Displaying ./code/dlopen/dlopen.c
#include <stdio.h>
#include <dlfcn.h>
// Compile with: gcc -o dlopen dlopen.c -ldl
#define K 1024
int main(void)
{
void *lib = dlopen("./libfoo.so", RTLD_LAZY);
if (lib == NULL) {
perror("dlopen");
return 1;
}
int (*bar)(int, int) = dlsym(lib, "bar");
void (*baz)(int, int) = dlsym(lib, "baz");
int (*foo)(int, int, int) = dlsym(lib, "foo");
baz(bar(5, 4), foo(1, 4, 7));
char *str = dlsym(lib, "str");
printf("str = %s\n", str);
// char buf[K];
// FILE *fp = fopen("/proc/self/maps", "r");
// while (fgets(buf, K, fp) != NULL) printf("%s", buf);
// fclose(fp);
return 0;
}
|