First page Back Continue Last page Overview Graphics
The Sleepless Library
#include <stdio.h>
#define __USE_GNU // This is needed for the RTLD_NEXT definition
#include <dlfcn.h>
unsigned int sleep(unsigned int seconds) {
unsigned int (*origsleep)(unsigned int);
char * error;
origsleep = dlsym(RTLD_NEXT, "sleep");
if ((error = dlerror()) != NULL) {
fprintf (stderr, "%s\n", error);
exit(1);
}
printf("sleep less, do more\n");
origsleep((seconds / 2));
}
/* Compile with:
gcc sleepless.c -o sleepless.so -ldl -shared
*/