/* fakesys.c */ #include /* for execvp */ #include /* for dlsym */ #include static int (*real_execvp)(const char *file, char *const argv[]); int execvp(const char *file, char *const argv[]) { char *msg; /* lookup original shared lib function */ real_execvp = dlsym(RTLD_NEXT, "execvp"); /* see dlsym(3) */ if ( (msg = dlerror() ) != NULL ) { fprintf(stderr, "dlopen of execvp() failed : %s\n", msg); } fprintf(stderr, "calling execvp(\"%s\", ...)\n", file); /* execute original lib function */ return real_execvp(file, argv); }