bout de code pour la postérité, comme Linus notre dieu à tous, commença par créer le monde avec open ..., et que sous linux on peut s'amuser un peu !
-----------------
cat lol.c
#include <dlfcn.h>
int open(const char *pathname, int flags)
{
void *libc;
int (*open_call)(const char *,int);
int ret=-1;
if(libc=dlopen("/lib/libc.so.6",RTLD_LAZY)) {
open_call = dlsym(libc,"open");
usleep(1000000);
ret=(*open_call)(pathname,flags);
dlclose(libc);
}
return ret;
}
-----------------
gcc -shared -o lol.so lol.c -fPIC -ldl
export LD_PRELOAD=/home/npa/lol.so
-----------------
time tail -1 /etc/passwd
statd:x:124:65534::/var/lib/nfs:/bin/false
real 0m1.010s
user 0m0.010s
sys 0m0.010s
Bon après je te laisse comprendre tout seul le code et modifier le 1000000 à souhait !,
plus simple, envoyer des kill -STOP , kill -CONT sur les process le temps de laisser refroidir !!, jouer avec cpufreq et quelques echos bien placés dans /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq , mais c'est tout de suite moins drole alors ...
# réponse de papi
Posté par Old Geek . En réponse au message Limité l'utilisation du processeur lors d'une compilation. Évalué à 3.
-----------------
cat lol.c
#include <dlfcn.h>
int open(const char *pathname, int flags)
{
void *libc;
int (*open_call)(const char *,int);
int ret=-1;
if(libc=dlopen("/lib/libc.so.6",RTLD_LAZY)) {
open_call = dlsym(libc,"open");
usleep(1000000);
ret=(*open_call)(pathname,flags);
dlclose(libc);
}
return ret;
}
-----------------
gcc -shared -o lol.so lol.c -fPIC -ldl
export LD_PRELOAD=/home/npa/lol.so
-----------------
time tail -1 /etc/passwd
statd:x:124:65534::/var/lib/nfs:/bin/false
real 0m1.010s
user 0m0.010s
sys 0m0.010s
Bon après je te laisse comprendre tout seul le code et modifier le 1000000 à souhait !,
plus simple, envoyer des kill -STOP , kill -CONT sur les process le temps de laisser refroidir !!, jouer avec cpufreq et quelques echos bien placés dans /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq , mais c'est tout de suite moins drole alors ...
Nicolas