11 FILE *xxfopen1(const char *filename, const char *mode)
13 FILE *(*fopen_orig)(const char *, const char *);
14 void *dl = dlopen("/lib/libc.so.6", RTLD_NOW);
15 fopen_orig = dlsym(dl, "fopen");
16 printf("fopen: %p fopen_orig_dlopen: %p\n", fopen, fopen_orig);
17 return fopen_orig(filename, mode);
20 FILE *xxfopen2(const char *filename, const char *mode)
22 FILE *(*fopen_orig)(const char *, const char *);
23 FILE *(*fopen_orig2)(const char *, const char *);
24 fopen_orig = dlsym(RTLD_NEXT, "fopen");
25 fopen_orig2 = dlsym(RTLD_NEXT, "fopen");
26 printf("fopen: %p fopen_orig_next: %p %p\n", fopen, fopen_orig, fopen_orig2);
27 return fopen_orig(filename, mode);
36 f1 = xxfopen1("test.txt", "w");
37 f2 = xxfopen2("test.txt", "w");
38 f3 = fopen("test.txt", "w");
43 printf("f1 %d f2 %d f3 %d\n", ret1, ret2, ret3);
45 asprintf(&s, "cat /proc/%d/maps", getpid());